Predictive fetching of mobile application traffic

ABSTRACT

A mobile device having an established multiplexed connection for optimizing communications is configured for communicating over the established multiplexed connection, predicting an activity session based on application access history, and fetching data for an application before the activity session based on the predicted activity session. A second connection is established that is other than the established multiplexed connection with the mobile device. The fetched data is transmitted over the second connection.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation application of U.S. patentapplication Ser. No. 15/210,523 entitled “MOBILE APPLICATION TRAFFICOPTIMIZATION” which was filed on Jul. 14, 2016, being issued as U.S.Pat. No. 9,838,905 on Dec. 5, 2017, which is a continuation applicationof U.S. patent application Ser. No. 14/467,838 entitled “MOBILEAPPLICATION TRAFFIC OPTIMIZATION” which was filed on Aug. 25, 2014, nowU.S. Pat. No. 9,516,129 issued on Dec. 6, 2016, which is a divisionalapplication of U.S. patent application Ser. No. 13/188,553 entitled“MOBILE APPLICATION TRAFFIC OPTIMIZATION”, which was filed on Jul. 22,2011, now U.S. Pat. No. 8,886,176 issued on Nov. 11, 2014, which claimsthe benefit of U.S. Provisional Patent Application No. 61/367,871entitled “CONSERVING POWER CONSUMPTION IN APPLICATIONS WITH NETWORKINITIATED DATA TRANSFER FUNCTIONALITY”, which was filed on Jul. 26,2010, U.S. Provisional Patent Application No. 61/367,870 entitled“MANAGING AND IMPROVING NETWORK RESOURCE UTILIZATION, PERFORMANCE ANDOPTIMIZING TRAFFIC IN WIRE LINE AND WIRELESS NETWORKS WITH MOBILECLIENTS”, which was filed on Jul. 26, 2010, U.S. Provisional PatentApplication No. 61/408,858 entitled “CROSS APPLICATION TRAFFICCOORDINATION”, which was filed on Nov. 1, 2010, U.S. Provisional PatentApplication No. 61/408,839 entitled “ACTIVITY SESSION AS METHOD OFOPTIMIZING NETWORK RESOURCE USE”, which was filed on Nov. 1, 2010, U.S.Provisional Patent Application No. 61/408,829 entitled “DISTRIBUTEDPOLICY MANAGEMENT”, which was filed on Nov. 1, 2010, U.S. ProvisionalPatent Application No. 61/408,846 entitled “INTELLIGENT CACHE MANAGEMENTIN CONGESTED WIRELESS NETWORKS”, which was filed on Nov. 1, 2010, U.S.Provisional Patent Application No. 61/408,854 entitled “INTELLIGENTMANAGEMENT OF NON-CACHABLE CONTENT IN WIRELESS NETWORKS”, which wasfiled on Nov. 1, 2010, U.S. Provisional Patent Application No.61/408,826 entitled “ONE WAY INTELLIGENT HEARTBEAT”, which was filed onNov. 1, 2010, U.S. Provisional Patent Application No. 61/408,820entitled “TRAFFIC CATEGORIZATION AND POLICY DRIVING RADIO STATE”, whichwas filed on Nov. 1, 2010, U.S. Provisional Patent Application No.61/416,020 entitled “ALIGNING BURSTS FROM SERVER TO CLIENT”, which wasfiled on Nov. 22, 2010, U.S. Provisional Patent Application No.61/416,033 entitled “POLLING INTERVAL FUNCTIONS”, which was filed onNov. 22, 2010, U.S. Provisional Patent Application No. 61/430,828entitled “DOMAIN NAME SYSTEM WITH NETWORK TRAFFIC HARMONIZATION”, whichwas filed on Jan. 7, 2011, the contents of which are all incorporated byreference herein.

BACKGROUND

When WCDMA was specified, there was little attention to requirementsposed by applications whose functions are based on actions initiated bythe network, in contrast to functions initiated by the user or by thedevice. Such applications include, for example, push email, instantmessaging, visual voicemail and voice and video telephony, and others.Such applications typically require an always-on IP connection andfrequent transmit of small bits of data. WCDMA networks are designed andoptimized for high-throughput of large amounts of data, not forapplications that require frequent, but low-throughput and/or smallamounts of data. Each transaction puts the mobile device radio in a highpower mode for considerable length of time—typically between 15-30seconds. As the high power mode can consume as much as 100 x the poweras an idle mode, these network-initiated applications quickly drainbattery in WCDMA networks. The issue has been exacerbated by the rapidincrease of popularity of applications with network-initiatedfunctionalities, such as push email.

Lack of proper support has prompted a number of vendors to providedocuments to guide their operator partners and independent softwarevendors to configure their networks and applications to perform betterin WCDMA networks. This guidance focuses on: configuring networks to goto stay on high-power radio mode as short as possible and makingperiodic keep alive messages that are used to maintain an always-onTCP/IP connection as infrequent as possible. Such solutions typicallyassume lack of coordination between the user, the application and thenetwork.

Furthermore, application protocols may provide long-lived connectionsthat allow servers to push updated data to a mobile device without theneed of the client to periodically re-establish the connection or toperiodically query for changes. However, the mobile device needs to besure that the connection remains usable by periodically sending somedata, often called a keep-alive message, to the server and making surethe server is receiving this data. While the amount of data sent for asingle keep-alive is not a lot and the keep-alive interval for anindividual application is not too short, the cumulative effect ofmultiple applications performing this individually will amount to smallpieces of data being sent very frequently. Frequently sending bursts ofdata in a wireless network also result in high battery consumption dueto the constant need of powering/re-powering the radio module.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1A illustrates an example diagram of a system where a host serverfacilitates management of traffic between client devices and anapplication server or content provider in a wireless network forresource conservation.

FIG. 1B illustrates an example diagram of a proxy and cache systemdistributed between the host server and device which facilitates networktraffic management between a device and an application server/contentprovider for resource conservation.

FIG. 2 depicts a block diagram illustrating an example of client-sidecomponents in a distributed proxy and cache system residing on a mobiledevice that manages traffic in a wireless network for resourceconservation.

FIG. 3 depicts a block diagram illustrating an example of server-sidecomponents in a distributed proxy and cache system that manages trafficin a wireless network for resource conservation.

FIG. 4 depicts a diagram showing how data requests from a mobile deviceto an application server/content provider in a wireless network can becoordinated by a distributed proxy system in a manner such that networkand battery resources are conserved through using content caching andmonitoring performed by the distributed proxy system.

FIG. 5 depicts a diagram showing one example process for implementing ahybrid IP and SMS power saving mode on a mobile device using adistributed proxy and cache system (e.g., such as the distributed systemshown in the example of FIG. 1B).

FIG. 6 depicts a flow chart illustrating example processes through whichapplication behavior on a mobile device is used for trafficoptimization.

FIG. 7 depicts a flow chart illustrating an example process for mobileapplication traffic optimization through data monitoring andcoordination in a distributed proxy and cache system.

FIG. 8 depicts a flow chart illustrating an example process forpreventing applications from needing to send keep-alive messages tomaintain an IP connection with a content server.

FIG. 9 shows a diagrammatic representation of a machine in the exampleform of a computer system within which a set of instructions, forcausing the machine to perform any one or more of the methodologiesdiscussed herein, may be executed.

DETAILED DESCRIPTION

The following description and drawings are illustrative and are not tobe construed as limiting. Numerous specific details are described toprovide a thorough understanding of the disclosure. However, in certaininstances, well-known or conventional details are not described in orderto avoid obscuring the description. References to one or an embodimentin the present disclosure can be, but not necessarily are, references tothe same embodiment; and, such references mean at least one of theembodiments.

Reference in this specification to “one embodiment” or “an embodiment”means that a particular feature, structure, or characteristic describedin connection with the embodiment is included in at least one embodimentof the disclosure. The appearances of the phrase “in one embodiment” invarious places in the specification are not necessarily all referring tothe same embodiment, nor are separate or alternative embodimentsmutually exclusive of other embodiments. Moreover, various features aredescribed which may be exhibited by some embodiments and not by others.Similarly, various requirements are described which may be requirementsfor some embodiments but not other embodiments.

The terms used in this specification generally have their ordinarymeanings in the art, within the context of the disclosure, and in thespecific context where each term is used. Certain terms that are used todescribe the disclosure are discussed below, or elsewhere in thespecification, to provide additional guidance to the practitionerregarding the description of the disclosure. For convenience, certainterms may be highlighted, for example using italics and/or quotationmarks. The use of highlighting has no influence on the scope and meaningof a term; the scope and meaning of a term is the same, in the samecontext, whether or not it is highlighted. It will be appreciated thatsame thing can be said in more than one way.

Consequently, alternative language and synonyms may be used for any oneor more of the terms discussed herein, nor is any special significanceto be placed upon whether or not a term is elaborated or discussedherein. Synonyms for certain terms are provided. A recital of one ormore synonyms does not exclude the use of other synonyms. The use ofexamples anywhere in this specification including examples of any termsdiscussed herein is illustrative only, and is not intended to furtherlimit the scope and meaning of the disclosure or of any exemplifiedterm. Likewise, the disclosure is not limited to various embodimentsgiven in this specification.

Without intent to limit the scope of the disclosure, examples ofinstruments, apparatus, methods and their related results according tothe embodiments of the present disclosure are given below. Note thattitles or subtitles may be used in the examples for convenience of areader, which in no way should limit the scope of the disclosure. Unlessotherwise defined, all technical and scientific terms used herein havethe same meaning as commonly understood by one of ordinary skill in theart to which this disclosure pertains. In the case of conflict, thepresent document, including definitions will control.

Embodiments of the present disclosure include systems and methods formobile application traffic optimization.

One embodiment of the disclosed technology includes, a system thatoptimizes multiple aspects of the connection with wired and wirelessnetworks and devices through a comprehensive view of device andapplication activity including: loading, current application needs on adevice, controlling the type of access (push vs. pull or hybrid),location, concentration of users in a single area, time of day, howoften the user interacts with the application, content or device, andusing this information to shape traffic to a cooperative client/serveror simultaneously mobile devices without a cooperative client. Becausethe disclosed server is not tied to any specific network provider it hasvisibility into the network performance across all service providers.This enables optimizations to be applied to devices regardless of theoperator or service provider, thereby enhancing the user experience andmanaging network utilization while roaming. Bandwidth has beenconsidered a major issue in wireless networks today. More and moreresearch has been done related to the need for additional bandwidth tosolve access problems—many of the performance enhancing solutions andnext generation standards, such as those commonly referred to as 4G,namely LTE, 4G, and WiMAX are focused on providing increased bandwidth.Although partially addressed by the standards a key problem that remainsis lack of bandwidth on the signaling channel more so than the datachannel.

Embodiments of the disclosed technology includes, for example, alignmentof requests from multiple applications to minimize the need for severalpolling requests; leverage specific content types to determine how toproxy/manage a connection/content; and apply specific heuristicsassociated with device, user behavioral patterns (how often theyinteract with the device/application) and/or network parameters.

Embodiments of the present technology can further include, movingrecurring HTTP polls performed by various widgets, RSS readers, etc., toremote network node (e.g., Network operation center (NOC)), thusconsiderably lowering device battery/power consumption, radio channelsignaling, and bandwidth usage. Additionally, the offloading can beperformed transparently so that existing applications do not need to bechanged.

In some embodiments, this can be implemented using a local proxy on themobile device which automatically detects recurring requests for thesame content (RSS feed, Widget data set) that matches a specific rule(e.g. happens every 15 minutes). The local proxy can automatically cachethe content on the mobile device while delegating the polling to theserver (e.g., a proxy server operated as an element of a communicationsnetwork). The server can then notify the mobile/client proxy if thecontent changes, and if content has not changed (or not changedsufficiently, or in an identified manner or amount) the mobile proxyprovides the latest version in its cache to the user (without need toutilize the radio at all). This way the mobile device (e.g., a mobilephone, smart phone, etc.) does not need to open up (e.g., thus poweringon the radio) or use a data connection if the request is for contentthat is monitored and that has been not flagged as new, changed, orotherwise different.

The logic for automatically adding content sources/application servers(e.g., including URLs/content) to be monitored can also check forvarious factors like how often the content is the same, how often thesame request is made (is there a fixed interval/pattern?), whichapplication is requesting the data, etc. Similar rules to decide betweenusing the cache and request the data from the original source may alsobe implemented and executed by the local proxy and/or server.

For example, when the request comes at an unscheduled/unexpected time(user initiated check), or after every (n) consecutive times theresponse has been provided from the cache, etc., or if the applicationis running in the background vs. in a more interactive mode of theforeground. As more and more mobile applications base their features onresources available in the network, this becomes increasingly important.In addition, the disclosed technology allows elimination of unnecessarychatter from the network, benefiting the operators trying to optimizethe wireless spectrum usage.

FIG. 1A illustrates an example diagram of a system where a host server100 facilitates management of traffic between client devices 102 and anapplication server or content provider 110 in a wireless network forresource conservation.

The client devices 102A-D can be any system and/or device, and/or anycombination of devices/systems that is able to establish a connection,including wired, wireless, cellular connections with another device, aserver and/or other systems such as host server 100 and/or applicationserver/content provider 110. Client devices 102 will typically include adisplay and/or other output functionalities to present information anddata exchanged between among the devices 102 and/or the host server 100and/or application server/content provider 110.

For example, the client devices 102 can include mobile, hand held orportable devices or non-portable devices and can be any of, but notlimited to, a server desktop, a desktop computer, a computer cluster, orportable devices including, a notebook, a laptop computer, a handheldcomputer, a palmtop computer, a mobile phone, a cell phone, a smartphone, a PDA, a Blackberry device, a Palm device, a handheld tablet(e.g. an iPad or any other tablet), a hand held console, a hand heldgaming device or console, any SuperPhone such as the iPhone, and/or anyother portable, mobile, hand held devices, etc. In one embodiment, theclient devices 102, host server 100, and app server 110 are coupled viaa network 106 and/or a network 108. In some embodiments, the devices 102and host server 100 may be directly connected to one another.

The input mechanism on client devices 102 can include touch screenkeypad (including single touch, multi-touch, gesture sensing in 2D or3D, etc.), a physical keypad, a mouse, a pointer, a track pad, motiondetector (e.g., including 1-axis, 2-axis, 3-axis accelerometer, etc.), alight sensor, capacitance sensor, resistance sensor, temperature sensor,proximity sensor, a piezoelectric device, device orientation detector(e.g., electronic compass, tilt sensor, rotation sensor, gyroscope,accelerometer), or a combination of the above.

Signals received or detected indicating user activity at client devices102 through one or more of the above input mechanism, or others, can beused in the disclosed technology in acquiring context awareness at theclient device 102. Context awareness at client devices 102 generallyincludes, by way of example but not limitation, client device 102operation or state acknowledgement, management, useractivity/behavior/interaction awareness, detection, sensing, tracking,trending, and/or application (e.g., mobile applications) type, behavior,activity, operating state, etc.

Context awareness in the present disclosure also includes knowledge anddetection of network side contextual data and can include networkinformation such as network capacity, bandwidth, traffic, type ofnetwork/connectivity, and/or any other operational state data. Networkside contextual data can be received from and/or queried from networkservice providers (e.g., cell provider 112 and/or Internet serviceproviders) of the network 106 and/or network 108 (e.g., by the hostserver and/or devices 102). In addition to application context awarenessas determined from the client 102 side, the application contextawareness may also be received from or obtained/queried from therespective application/service providers 110 (by the host 100 and/orclient devices 102).

The host server 100 can use, for example, contextual informationobtained for client devices 102, networks 106/108, applications (e.g.,mobile applications), application server/provider 110, or anycombination of the above, to manage the traffic in the system to satisfydata needs of the client devices 102 (e.g., to satisfy application orany other request including HTTP request). In one embodiment, thetraffic is managed by the host server 100 to satisfy data requests madein response to explicit or non-explicit user 103 requests and/ordevice/application maintenance tasks. The traffic can be managed suchthat network consumption, for example, use of the cellular network isconserved for effective and efficient bandwidth utilization. Inaddition, the host server 100 can manage and coordinate such traffic inthe system such that use of device 102 side resources (e.g., includingbut not limited to battery power consumption, radio use,processor/memory use) are optimized with a general philosophy forresource conservation while still optimizing performance and userexperience.

For example, in context of battery conservation, the device 150 canobserve user activity (for example, by observing user keystrokes,backlight status, or other signals via one or more input mechanisms,etc.) and alters device 102 behaviors. The device 150 can also requestthe host server 100 to alter the behavior for network resourceconsumption based on user activity or behavior.

In one embodiment, the traffic management for resource conservation isperformed using a distributed system between the host server 100 andclient device 102. The distributed system can include proxy server andcache components on the server 100 side and on the client 102 side, forexample, as shown by the server cache 135 on the server 100 side and thelocal cache 150 on the client 102 side.

Functions and techniques disclosed for context aware traffic managementfor resource conservation in networks (e.g., network 106 and/or 108) anddevices 102, reside in a distributed proxy and cache system. The proxyand cache system can be distributed between, and reside on, a givenclient device 102 in part or in whole and/or host server 100 in part orin whole. The distributed proxy and cache system are illustrated withfurther reference to the example diagram shown in FIG. 1B. Functions andtechniques performed by the proxy and cache components in the clientdevice 102, the host server 100, and the related components therein aredescribed, respectively, in detail with further reference to theexamples of FIG. 2-3.

In one embodiment, client devices 102 communicate with the host server100 and/or the application server 110 over network 106, which can be acellular network. To facilitate overall traffic management betweendevices 102 and various application servers/content providers 110 toimplement network (bandwidth utilization) and device resource (e.g.,battery consumption), the host server 100 can communicate with theapplication server/providers 110 over the network 108, which can includethe Internet.

In general, the networks 106 and/or 108, over which the client devices102, the host server 100, and/or application server 110 communicate, maybe a cellular network, a telephonic network, an open network, such asthe Internet, or a private network, such as an intranet and/or theextranet, or any combination thereof. For example, the Internet canprovide file transfer, remote log in, email, news, RSS, cloud-basedservices, instant messaging, visual voicemail, push mail, VoIP, andother services through any known or convenient protocol, such as, but isnot limited to the TCP/IP protocol, UDP, HTTP, DNS, Open SystemInterconnections (OSI), FTP, UPnP, iSCSI, NSF, ISDN, PDH, RS-232, SDH,SONET, etc.

The networks 106 and/or 108 can be any collection of distinct networksoperating wholly or partially in conjunction to provide connectivity tothe client devices 102 and the host server 100 and may appear as one ormore networks to the serviced systems and devices. In one embodiment,communications to and from the client devices 102 can be achieved by, anopen network, such as the Internet, or a private network, such as anintranet and/or the extranet. In one embodiment, communications can beachieved by a secure communications protocol, such as secure socketslayer (SSL), or transport layer security (TLS).

In addition, communications can be achieved via one or more networks,such as, but are not limited to, one or more of WiMax, a Local AreaNetwork (LAN), Wireless Local Area Network (WLAN), a Personal areanetwork (PAN), a Campus area network (CAN), a Metropolitan area network(MAN), a Wide area network (WAN), a Wireless wide area network (WWAN),enabled with technologies such as, by way of example, Global System forMobile Communications (GSM), Personal Communications Service (PCS),Digital Advanced Mobile Phone Service (D-Amps), Bluetooth, Wi-Fi, FixedWireless Data, 2G, 2.5G, 3G, 4G, IMT-Advanced, pre-4G, 3G LTE, 3GPP LTE,LTE Advanced, mobile WiMax, WiMax 2, WirelessMAN-Advanced networks,enhanced data rates for GSM evolution (EDGE), General packet radioservice (GPRS), enhanced GPRS, iBurst, UMTS, HSPDA, HSUPA, HSPA,UMTS-TDD, 1×RTT, EV-DO, messaging protocols such as, TCP/IP, SMS, MMS,extensible messaging and presence protocol (XMPP), real time messagingprotocol (RTMP), instant messaging and presence protocol (IMPP), instantmessaging, USSD, IRC, or any other wireless data networks or messagingprotocols.

FIG. 1B illustrates an example diagram of a proxy and cache systemdistributed between the host server 100 and device 150 which facilitatesnetwork traffic management between the device 150 and an applicationserver/content provider 100 (e.g., a source server) for resourceconservation.

The distributed proxy and cache system can include, for example, theproxy server 125 (e.g., remote proxy) and the server cache, 135components on the server side. The server-side proxy 125 and cache 135can, as illustrated, reside internal to the host server 100. Inaddition, the proxy server 125 and cache 135 on the server-side can bepartially or wholly external to the host server 100 and in communicationvia one or more of the networks 106 and 108. For example, the proxyserver 125 may be external to the host server and the server cache 135may be maintained at the host server 100. Alternatively, the proxyserver 125 may be within the host server 100 while the server cache isexternal to the host server 100. In addition, each of the proxy server125 and the cache 135 may be partially internal to the host server 100and partially external to the host server 100.

The distributed system can also, include, in one embodiment, client-sidecomponents, including by way of example but not limitation, a localproxy 175 (e.g., a mobile client on a mobile device) and/or a localcache 185, which can, as illustrated, reside internal to the device 150(e.g., a mobile device).

In addition, the client-side proxy 175 and local cache 185 can bepartially or wholly external to the device 150 and in communication viaone or more of the networks 106 and 108. For example, the local proxy175 may be external to the device 150 and the local cache 185 may bemaintained at the device 150. Alternatively, the local proxy 175 may bewithin the device 150 while the local cache 185 is external to thedevice 150. In addition, each of the proxy 175 and the cache 185 may bepartially internal to the host server 100 and partially external to thehost server 100.

In one embodiment, the distributed system can include an optionalcaching proxy server 199. The caching proxy server 199 can be acomponent which is operated by the application server/content provider110, the host server 100, or a network service provider 112, and or anycombination of the above to facilitate network traffic management fornetwork and device resource conservation. Proxy server 199 can be used,for example, for caching content to be provided to the device 150, forexample, from one or more of, the application server/provider 110, hostserver 100, and/or a network service provider 112. Content caching canalso be entirely or partially performed by the remote proxy 125 tosatisfy application requests or other data requests at the device 150.

In context aware traffic management and optimization for resourceconservation in a network (e.g., cellular or other wireless networks),characteristics of user activity/behavior and/or application behavior ata mobile device 150 can be tracked by the local proxy 175 andcommunicated, over the network 106 to the proxy server 125 component inthe host server 100, for example, as connection metadata. The proxyserver 125 which in turn is coupled to the application server/provider110 provides content and data to satisfy requests made at the device150.

In addition, the local proxy 175 can identify and retrieve mobile deviceproperties including, one or more of, battery level, network that thedevice is registered on, radio state, whether the mobile device is beingused (e.g., interacted with by a user). In some instances, the localproxy 175 can delay, expedite (prefetch), and/or modify data prior totransmission to the proxy server 125, when appropriate, as will befurther detailed with references to the description associated with theexamples of FIG. 2-3.

The local database 185 can be included in the local proxy 175 or coupledto the proxy 175 and can be queried for a locally stored response to thedata request prior to the data request being forwarded on to the proxyserver 125. Locally cached responses can be used by the local proxy 175to satisfy certain application requests of the mobile device 150, byretrieving cached content stored in the cache storage 185, when thecached content is still valid.

Similarly, the proxy server 125 of the host server 100 can also delay,expedite, or modify data from the local proxy prior to transmission tothe content sources (e.g., the app server/content provider 110). Inaddition, the proxy server 125 uses device properties and connectionmetadata to generate rules for satisfying request of applications on themobile device 150. The proxy server 125 can gather real time trafficinformation about requests of applications for later use in optimizingsimilar connections with the mobile device 150 or other mobile devices.

In general, the local proxy 175 and the proxy server 125 are transparentto the multiple applications executing on the mobile device. The localproxy 175 is generally transparent to the operating system or platformof the mobile device and may or may not be specific to devicemanufacturers. For example, he local proxy can be implemented withoutadding a TCP stack and thus act transparently to both the US and themobile applications. In some instances, the local proxy 175 isoptionally customizable in part or in whole to be device specific. Insome embodiments, the local proxy 175 may be bundled into a wirelessmodel, into a firewall, and/or a router.

In one embodiment, the host server 100 can in some instances, utilizethe store and forward functions of a short message service center (SMSC)112, such as that provided by the network service provider 112, incommunicating with the device 150 in achieving network trafficmanagement. As will be further described with reference to the exampleof FIG. 3, the host server 100 can forward content or HTTP responses tothe SMSC 112 such that it is automatically forwarded to the device 150if available, and for subsequent forwarding if the device 150 is notcurrently available.

In general, the disclosed distributed proxy and cache system allowsoptimization of network usage, for example, by serving requests from thelocal cache 185, the local proxy 175 reduces the number of requests thatneed to be satisfied over the network 106. Further, the local proxy 175and the proxy server 125 may filter irrelevant data from thecommunicated data. In addition, the local proxy 175 and the proxy server125 can also accumulate low priority data and send it in batches toavoid the protocol overhead of sending individual data fragments. Thelocal proxy 175 and the proxy server 125 can also compress or transcodethe traffic, reducing the amount of data sent over the network 106and/or 108. The signaling traffic in the network 106 and/or 108 can bereduced, as the networks are now used less often and the network trafficcan be synchronized among individual applications.

With respect to the battery life of the mobile device 150, by servingapplication or content requests from the local cache 185, the localproxy 175 can reduce the number of times the radio module is powered up.The local proxy 175 and the proxy server 125 can work in conjunction toaccumulate low priority data and send it in batches to reduce the numberof times and/or amount of time when the radio is powered up. The localproxy 175 can synchronize the network use by performing the batched datatransfer for all connections simultaneously.

FIG. 2 depicts a block diagram illustrating an example of client-sidecomponents in a distributed proxy and cache system residing on a device250 that manages traffic in a wireless network for resourceconservation.

The device 250, which can be a portable or mobile device, such as aportable phone, generally includes, for example, a network interface208, an operating system 204, a context API 206, and mobile applicationswhich may be proxy unaware 210 or proxy aware 220. Note that the device250 is specifically illustrated in the example of FIG. 2 as a mobiledevice, such is not a limitation and that device 250 may be anyportable/mobile or non-portable device able to receive, transmit signalsto satisfy data requests over a network including wired or wirelessnetworks (e.g., WiFi, cellular, Bluetooth, etc.).

The network interface 208 can be a networking module that enables thedevice 250 to mediate data in a network with an entity that is externalto the host server 250, through any known and/or convenientcommunications protocol supported by the host and the external entity.The network interface 208 can include one or more of a network adaptorcard, a wireless network interface card (e.g., SMS interface, WiFiinterface, interfaces for various generations of mobile communicationstandards including but not limited to 1G, 2G, 3G, 3.5G, 4G, LTE, etc.),Bluetooth, or whether or not the connection is via a router, an accesspoint, a wireless router, a switch, a multilayer switch, a protocolconverter, a gateway, a bridge, bridge router, a hub, a digital mediareceiver, and/or a repeater.

Device 250 can further include, client-side components of thedistributed proxy and cache system which can include, a local proxy 275(e.g., a mobile client of a mobile device) and a cache 285. In oneembodiment, the local proxy 275 includes a user activity module 215, aproxy API 225, a request/transaction manager 235, a caching policymanager 245, a traffic shaping engine 255, and/or a connection manager265. The traffic shaping engine 255 may further include an alignmentmodule 256 and/or a batching module 257, the connection manager 265 mayfurther include a radio controller 266. The request/transaction manager235 can further include an application behavior detector 236 and/or aprioritization engine 238, the application behavior detector 236 mayfurther include a pattern detector 237 and/or and application profilegenerator 238. Additional or less components/modules/engines can beincluded in the local proxy 275 and each illustrated component.

As used herein, a “module,” “a manager,” a “handler,” a “detector,” an“interface,” or an “engine” includes a general purpose, dedicated orshared processor and, typically, firmware or software modules that areexecuted by the processor. Depending upon implementation-specific orother considerations, the module, manager, hander, or engine can becentralized or its functionality distributed. The module, manager,hander, or engine can include general or special purpose hardware,firmware, or software embodied in a computer-readable (storage) mediumfor execution by the processor. As used herein, a computer-readablemedium or computer-readable storage medium is intended to include allmediums that are statutory (e.g., in the United States, under 35 U.S.C.101), and to specifically exclude all mediums that are non-statutory innature to the extent that the exclusion is necessary for a claim thatincludes the computer-readable (storage) medium to be valid. Knownstatutory computer-readable mediums include hardware (e.g., registers,random access memory (RAM), non-volatile (NV) storage, to name a few),but may or may not be limited to hardware.

In one embodiment, a portion of the distributed proxy and cache systemfor network traffic management resides in or is in communication withdevice 250, including local proxy 275 (mobile client) and/or cache 285.The local proxy 275 can provide an interface on the device 150 for usersto access device applications and services including email, IM, voicemail, visual voicemail, feeds, Internet, other applications, etc.

The proxy 275 is generally application independent and can be used byapplications (e.g., both proxy aware and proxy-unaware mobileapplications 210 and 220) to open TCP connections to a remote server(e.g., the server 100 in the examples of FIGS. 1A-1B and/or server proxy125/325 shown in the examples of FIG. 1B and FIG. 3). In some instances,the local proxy 275 includes a proxy API 225 which can be optionallyused to interface with proxy-aware applications 220 (or mobileapplications on a mobile device).

The applications 210 and 220 can generally include any user application,widgets, software, HTTP-based application, web browsers, video or othermultimedia streaming or downloading application, video games, socialnetwork applications, email clients, RSS management applications,application stores, document management applications, productivityenhancement applications, etc. The applications can be provided with thedevice OS, by the device manufacturer, by the network service provider,downloaded by the user, or provided by others.

One embodiment of the local proxy 275 includes or is coupled to acontext API 206, as shown. The context API 206 may be a part of theoperating system 204 or device platform or independent of the operatingsystem 204, as illustrated. The operating system 204 can include anyoperating system including but not limited to, any previous, current,and/or future versions/releases of, Windows Mobile, iOS, Android,Symbian, Palm OS, Brew MP, Java 2 Micro Edition (J2ME), Blackberry, etc.

The context API 206 may be a plug-in to the operating system 204 or aparticular client application on the device 250. The context API 206 candetect signals indicative of user or device activity, for example,sensing motion, gesture, device location, changes in device location,device backlight, keystrokes, clicks, activated touch screen, mouseclick or detection of other pointer devices. The context API 206 can becoupled to input devices or sensors on the device 250 to identify thesesignals. Such signals can generally include input received in responseto explicit user input at an input device/mechanism at the device 250and/or collected from ambient signals/contextual cues detected at or inthe vicinity of the device 250 (e.g., light, motion, piezoelectric,etc.).

In one embodiment, the user activity module 215 interacts with thecontext API 206 to identify, determine, infer, detect, compute, predict,and/or anticipate, characteristics of user activity on the device 250.Various inputs collected by the context API 206 can be aggregated by theuser activity module 215 to generate a profile for characteristics ofuser activity. Such a profile can be generated by the module 215 withvarious temporal characteristics. For instance, user activity profilecan be generated in real-time for a given instant to provide a view ofwhat the user is doing or not doing at a given time (e.g., defined by atime window, in the last minute, in the last 30 seconds, etc.), a useractivity profile can also be generated for a ‘session’ defined by anapplication or web page that describes the characteristics of userbehavior with respect to a specific task they are engaged in on thedevice 250, or for a specific time period (e.g., for the last 2 hours,for the last 5 hours).

Additionally, characteristic profiles can be generated by the useractivity module 215 to depict a historical trend for user activity andbehavior (e.g. 1 week, 1 mo, 2 mo, etc.). Such historical profiles canalso be used to deduce trends of user behavior, for example, accessfrequency at different times of day, trends for certain days of the week(weekends or week days), user activity trends based on location data(e.g., IP address, GPS, or cell tower coordinate data) or changes inlocation data (e.g., user activity based on user location, or useractivity based on whether the user is on the go, or traveling outside ahome region, etc.) to obtain user activity characteristics.

In one embodiment, user activity module 215 can detect and track useractivity with respect to applications, documents, files, windows, icons,and folders on the device 250. For example, the user activity module 215can detect when an application or window (e.g., a web browser) has beenexited, closed, minimized, maximized, opened, moved into the foreground,or into the background, multimedia content playback, etc.

In one embodiment, characteristics of the user activity on the device250 can be used to locally adjust behavior of the device (e.g., mobiledevice) to optimize its resource consumption such as battery/powerconsumption and more generally, consumption of other device resourcesincluding memory, storage, and processing power. In one embodiment, theuse of a radio on a device can be adjusted based on characteristics ofuser behavior (e.g., by the radio controller 266 of the connectionmanager 265) coupled to the user activity module 215. For example, theradio controller 266 can turn the radio on or off, based oncharacteristics of the user activity on the device 250. In addition, theradio controller 266 can adjust the power mode of the radio (e.g., to bein a higher power mode or lower power mode) depending on characteristicsof user activity.

In one embodiment, characteristics of the user activity on device 250can also be used to cause another device (e.g., other computers, amobile device, or a non-portable device) or server (e.g., host server100 and 300 in the examples of FIGS. 1A-B and FIG. 3) which cancommunicate (e.g., via a cellular or other network) with the device 250to modify its communication frequency with the device 250. The localproxy 275 can use the characteristics information of user behaviordetermined by the user activity module 215 to instruct the remote deviceas to how to modulate its communication frequency (e.g., decreasingcommunication frequency, such as data push frequency if the user isidle, requesting that the remote device notify the device 250 if newdata, changed data, different data, or data of a certain level ofimportance becomes available, etc.).

In one embodiment, the user activity module 215 can, in response todetermining that user activity characteristics indicate that a user isactive after a period of inactivity, request that a remote device (e.g.,server host server 100 and 300 in the examples of FIGS. 1A-B and FIG. 3)send the data that was buffered as a result of the previously decreasedcommunication frequency.

In addition, or in alternative, the local proxy 275 can communicate thecharacteristics of user activity at the device 250 to the remote device(e.g., host server 100 and 300 in the examples of FIGS. 1A-B and FIG. 3)and the remote device determines how to alter its own communicationfrequency with the device 250 for network resource conservation andconservation of device 250 resources.

One embodiment of the local proxy 275 further includes arequest/transaction manager 235, which can detect, identify, intercept,process, manage, data requests initiated on the device 250, for example,by applications 210 and/or 220, and/or directly/indirectly by a userrequest. The request/transaction manager 235 can determine how and whento process a given request or transaction, or a set ofrequests/transactions, based on transaction characteristics.

The request/transaction manager 235 can prioritize requests ortransactions made by applications and/or users at the device 250, forexample by the prioritization engine 238. Importance or priority ofrequests/transactions can be determined by the manager 235 by applying arule set, for example, according to time sensitivity of the transaction,time sensitivity of the content in the transaction, time criticality ofthe transaction, time criticality of the data transmitted in thetransaction, and/or time criticality or importance of an applicationmaking the request.

In addition, transaction characteristics can also depend on whether thetransaction was a result of user-interaction or other user initiatedaction on the device (e.g., user interaction with a mobile application).In general, a time critical transaction can include a transactionresulting from a user-initiated data transfer, and can be prioritized assuch. Transaction characteristics can also depend on the amount of datathat will be transferred or is anticipated to be transferred as a resultof the request/requested transaction. For example, the connectionmanager 265, can adjust the radio mode (e.g., high power or low powermode via the radio controller 266) based on the amount of data that willneed to be transferred.

In addition, the radio controller 266/connection manager 265 can adjustthe radio power mode (high or low) based on time criticality/sensitivityof the transaction. The radio controller 266 can trigger the use of highpower radio mode when a time-critical transaction (e.g., a transactionresulting from a user-initiated data transfer, an application running inthe foreground, any other event meeting a certain criteria) is initiatedor detected.

In general, the priorities can be set by default, for example, based ondevice platform, device manufacturer, operating system, etc. Prioritiescan alternatively or in additionally be set by the particularapplication; for example, the Facebook mobile application can set itsown priorities for various transactions (e.g., a status update can be ofhigher priority than an add friend request or a poke request, a messagesend request can be of higher priority than a message delete request,for example), an email client or IM chat client may have its ownconfigurations for priority. The prioritization engine 238 may includeset of rules for assigning priority.

The priority engine 238 can also track network provider limitations orspecifications on application or transaction priority in determining anoverall priority status for a request/transaction. Furthermore, prioritycan in part or in whole be determined by user preferences, eitherexplicit or implicit. A user, can in general, set priorities atdifferent tiers, such as, specific priorities for sessions, or types, orapplications (e.g., a browsing session, a gaming session, versus an IMchat session, the user may set a gaming session to always have higherpriority than an IM chat session, which may have higher priority thanweb-browsing session). A user can set application-specific priorities,(e.g., a user may set Facebook related transactions to have a higherpriority than LinkedIn related transactions), for specific transactiontypes (e.g., for all send message requests across all applications tohave higher priority than message delete requests, for allcalendar-related events to have a high priority, etc.), and/or forspecific folders.

The priority engine 238 can track and resolve conflicts in prioritiesset by different entities. For example, manual settings specified by theuser may take precedence over device OS settings, network providerparameters/limitations (e.g., set in default for a network service area,geographic locale, set for a specific time of day, or set based onservice/fee type) may limit any user-specified settings and/orapplication-set priorities. In some instances, a manual sync requestreceived from a user can override some, most, or all priority settingsin that the requested synchronization is performed when requested,regardless of the individually assigned priority or an overall priorityranking for the requested action.

Priority can be specified and tracked internally in any known and/orconvenient manner, including but not limited to, a binaryrepresentation, a multi-valued representation, a graded representationand all are considered to be within the scope of the disclosedtechnology.

TABLE I Change Change (initiated on device) Priority (initiated onserver) Priority Send email High Receive email High Delete email LowEdit email Often not (Un)read email Low possible to sync (Low ifpossible) Move message Low New email in deleted Low Read more High itemsDown load High Delete an email Low attachment (Un)Read an email Low NewCalendar event High Move messages Low Edit/change High Any calendarchange High Calendar event Any contact change High Add a contact HighWipe/lock device High Edit a contact High Settings change High Searchcontacts High Any folder change High Change a setting High Connectorrestart High (if no Manual send/receive High changes nothing is sent) IMstatus change Medium Social Network Medium Status Updates Auction outbidor High Sever Weather Alerts High change notification Weather UpdatesLow News Updates Low

Table I above shows, for illustration purposes, some examples oftransactions with examples of assigned priorities in a binaryrepresentation scheme. Additional assignments are possible foradditional types of events, requests, transactions, and as previouslydescribed, priority assignments can be made at more or less granularlevels, e.g., at the session level or at the application level, etc.

As shown by way of example in the above table, in general, lowerpriority requests/transactions can include, updating message status asbeing read, unread, deleting of messages, deletion of contacts; higherpriority requests/transactions, can in some instances include, statusupdates, new IM chat message, new email, calendar eventupdate/cancellation/deletion, an event in a mobile gaming session, orother entertainment related events, a purchase confirmation through aweb purchase or online, request to load additional or download content,contact book related events, a transaction to change a device setting,location-aware or location-based events/transactions, or any otherevents/request/transactions initiated by a user or where the user isknown to be, expected to be, or suspected to be waiting for a response,etc.

Inbox pruning events (e.g., email, or any other types of messages), aregenerally considered low priority and absent other impending events,generally will not trigger use of the radio on the device 250.Specifically, pruning events to remove old email or other content can be‘piggy backed’ with other communications if the radio is not otherwiseon, at the time of a scheduled pruning event. For example, if the userhas preferences set to ‘keep messages for 7 days old,’ then instead ofpowering on the device radio to initiate a message delete from thedevice 250 the moment that the message has exceeded 7 days old, themessage is deleted when the radio is powered on next. If the radio isalready on, then pruning may occur as regularly scheduled.

The request/transaction manager 235, can use the priorities for requests(e.g., by the prioritization engine 238) to manage outgoing traffic fromthe device 250 for resource optimization (e.g., to utilize the deviceradio more efficiently for battery conservation). For example,transactions/requests below a certain priority ranking may not triggeruse of the radio on the device 250 if the radio is not already switchedon, as controlled by the connection manager 265. In contrast, the radiocontroller 266 can turn on the radio such a request can be sent when arequest for a transaction is detected to be over a certain prioritylevel.

In one embodiment, priority assignments (such as that determined by thelocal proxy 275 or another device/entity) can be used cause a remotedevice to modify its communication with the frequency with the mobiledevice. For example, the remote device can be configured to sendnotifications to the device 250 when data of higher importance isavailable to be sent to the mobile device.

In one embodiment, transaction priority can be used in conjunction withcharacteristics of user activity in shaping or managing traffic, forexample, by the traffic shaping engine 255. For example, the trafficshaping engine 255 can, in response to detecting that a user is dormantor inactive, wait to send low priority transactions from the device 250,for a period of time. In addition, the traffic shaping engine 255 canallow multiple low priority transactions to accumulate for batchtransferring from the device 250 (e.g., via the batching module 257). Inone embodiment, the priorities can be set, configured, or readjusted bya user. For example, content depicted in Table I in the same or similarform can be accessible in a user interface on the device 250 and forexample, used by the user to adjust or view the priorities.

The batching module 257 can initiate batch transfer based on certaincriteria. For example, batch transfer (e.g., of multiple occurrences ofevents, some of which occurred at different instances in time) may occurafter a certain number of low priority events have been detected, orafter an amount of time elapsed after the first of the low priorityevent was initiated. In addition, the batching module 257 can initiatebatch transfer of the cumulated low priority events when a higherpriority event is initiated or detected at the device 250. Batchtransfer can otherwise be initiated when radio use is triggered foranother reason (e.g., to receive data from a remote device such as hostserver 100 or 300). In one embodiment, an impending pruning event(pruning of an inbox), or any other low priority events, can be executedwhen a batch transfer occurs.

In general, the batching capability can be disabled or enabled at theevent/transaction level, application level, or session level, based onany one or combination of the following: user configuration, devicelimitations/settings, manufacturer specification, network providerparameters/limitations, platform specific limitations/settings, deviceOS settings, etc. In one embodiment, batch transfer can be initiatedwhen an application/window/file is closed out, exited, or moved into thebackground; users can optionally be prompted before initiating a batchtransfer; users can also manually trigger batch transfers.

In one embodiment, the local proxy 275 locally adjusts radio use on thedevice 250 by caching data in the cache 285. When requests ortransactions from the device 250 can be satisfied by content stored inthe cache 285, the radio controller 266 need not activate the radio tosend the request to a remote entity (e.g., the host server 100, 300, asshown in FIG. 1 and FIG. 3 or a content provider/application server suchas the server/provider 110 shown in the examples of FIG. 1A and FIG.1B). As such, the local proxy 275 can use the local cache 285 and thecache policy manager 245 to locally store data for satisfying datarequests to eliminate or reduce the use of the device radio forconservation of network resources and device battery consumption.

In leveraging the local cache, once the request/transaction manager 225intercepts a data request by an application on the device 250, the localrepository 285 can be queried to determine if there is any locallystored response, and also determine whether the response is valid. Whena valid response is available in the local cache 285, the response canbe provided to the application on the device 250 without the device 250needing to access the cellular network.

If a valid response is not available, the local proxy 275 can query aremote proxy (e.g., the server proxy 325 of FIG. 3) to determine whethera remotely stored response is valid. If so, the remotely stored response(e.g., which may be stored on the server cache 135 or optional cachingserver 199 shown in the example of FIG. 1B) can be provided to themobile device, possibly without the mobile device 250 needing to accessthe cellular network, thus relieving consumption of network resources.

If a valid cache response is not available, or if cache responses areunavailable for the intercepted data request, the local proxy 275, forexample, the caching policy manager 245, can send the data request to aremote proxy (e.g., server proxy 325 of FIG. 3) which forwards the datarequest to a content source (e.g., application server/content provider110 of FIG. 1) and a response from the content source can be providedthrough the remote proxy, as will be further described in thedescription associated with the example host server 300 of FIG. 3. Thecache policy manager 245 can manage or process requests that use avariety of protocols, including but not limited to HTTP, HTTPS, IMAP,POP, SMTP and/or ActiveSync. The caching policy manager 245 can locallystore responses for data requests in the local database 285 as cacheentries, for subsequent use in satisfying same or similar data requests.The manager 245 can request that the remote proxy monitor responses forthe data request, and the remote proxy can notify the device 250 when anunexpected response to the data request is detected. In such an event,the cache policy manager 245 can erase or replace the locally storedresponse(s) on the device 250 when notified of the unexpected response(e.g., new data, changed data, additional data, different response,etc.) to the data request. In one embodiment, the caching policy manager245 is able to detect or identify the protocol used for a specificrequest, including but not limited to HTTP, HTTPS, IMAP, POP, SMTPand/or ActiveSync. In one embodiment, application specific handlers(e.g., via the application protocol module 246 of the manager 245) onthe local proxy 275 allows for optimization of any protocol that can beport mapped to a handler in the distributed proxy (e.g., port mapped onthe proxy server 325 in the example of FIG. 3).

In one embodiment, the local proxy 275 notifies the remote proxy suchthat the remote proxy can monitor responses received for the datarequest from the content source for changed results prior to returningthe result to the device 250, for example, when the data request to thecontent source has yielded same results to be returned to the mobiledevice. In general, the local proxy 275 can simulate application serverresponses for applications on the device 250, using locally cachedcontent. This can prevent utilization of the cellular network fortransactions where new/changed/different data is not available, thusfreeing up network resources and preventing network congestion.

In one embodiment, the local proxy 275 includes an application behaviordetector 236 to track, detect, observe, monitor, applications (e.g.,proxy aware and/or unaware applications 210 and 220) accessed orinstalled on the device 250. Application behaviors, or patterns indetected behaviors (e.g., via the pattern detector 237) of one or moreapplications accessed on the device 250 can be used by the local proxy275 to optimize traffic in a wireless network needed to satisfy the dataneeds of these applications.

For example, based on detected behavior of multiple applications, thetraffic shaping engine 255 can align content requests made by at leastsome of the applications over the network (wireless network) (e.g., viathe alignment module 256). The alignment module can delay or expeditesome earlier received requests to achieve alignment. When requests arealigned, the traffic shaping engine 255 can utilize the connectionmanager to poll over the network to satisfy application data requests.Content requests for multiple applications can be aligned based onbehavior patterns or rules/settings including, for example, contenttypes requested by the multiple applications (audio, video, text, etc.),mobile device parameters, and/or network parameters/traffic conditions,network service provider constraints/specifications, etc.

In one embodiment, the pattern detector 237 can detect recurrences inapplication requests made by the multiple applications, for example, bytracking patterns in application behavior. A tracked pattern caninclude, detecting that certain applications, as a background process,poll an application server regularly, at certain times of day, oncertain days of the week, periodically in a predictable fashion, with acertain frequency, with a certain frequency in response to a certaintype of event, in response to a certain type user query, frequency thatrequested content is the same, frequency with which a same request ismade, interval between requests, applications making a request, or anycombination of the above, for example.

Such recurrences can be used by traffic shaping engine 255 to offloadpolling of content from a content source (e.g., from an applicationserver/content provider 110 of FIG. 1) that would result from theapplication requests that would be performed at the mobile device 250 tobe performed instead, by a proxy server (e.g., proxy server 125 of FIG.1B or proxy server 325 of FIG. 3) remote from the device 250. Trafficengine 255 can decide to offload the polling when the recurrences matcha rule. For example, there are multiple occurrences or requests for thesame resource that have exactly the same content, or returned value, orbased on detection of repeatable time periods between requests andresponses such as a resource that is requested at specific times duringthe day. The offloading of the polling can decrease the amount ofbandwidth consumption needed by the mobile device 250 to establish awireless (cellular) connection with the content source for repetitivecontent polls.

As a result of the offloading of the polling, locally cached contentstored in the local cache 285 can be provided to satisfy data requestsat the device 250, when content change is not detected in the polling ofthe content sources. As such, when data has not changed, applicationdata needs can be satisfied without needing to enable radio use oroccupying cellular bandwidth in a wireless network. When data haschanged, or when data is different, and/or new data has been received,the remote entity to which polling is offloaded, can notify the device250. The remote entity may be the host server 300 as shown in theexample of FIG. 3.

In one embodiment, the local proxy 275 can mitigate the need/use ofperiodic keep-alive messages (heartbeat messages) to maintain TCP/IPconnections, which can consume significant amounts of power thus havingdetrimental impacts on mobile device battery life. The connectionmanager 265 in the local proxy (e.g., the heartbeat manager 267) candetect, identify, and intercept any or all heartbeat (keep-alive)messages being sent from applications.

The heartbeat manager 267 can prevent any or all of these heartbeatmessages from being sent over the cellular, or other network, andinstead rely on the server component of the distributed proxy system(e.g., shown in FIG. 1B) to generate the and send the heartbeat messagesto maintain a connection with the backend (e.g., app server/provider 110in the example of FIG. 1).

The local proxy 275 generally represents any one or a portion of thefunctions described for the individual managers, modules, and/orengines. The local proxy 275 and device 250 can include additional orless components; more or less functions can be included, in whole or inpart, without deviating from the novel art of the disclosure.

FIG. 3 depicts a block diagram illustrating an example of server-sidecomponents in a distributed proxy and cache system residing on a hostserver 300 that manages traffic in a wireless network for resourceconservation.

The host server 300 generally includes, for example, a network interface308 and/or one or more repositories 312, 314, 316. Note that server 300may be any portable/mobile or non-portable device, server, cluster ofcomputers and/or other types of processing units (e.g., any number of amachine shown in the example of FIG. 11) able to receive, transmitsignals to satisfy data requests over a network including any wired orwireless networks (e.g., WiFi, cellular, Bluetooth, etc.).

The network interface 308 can include networking module(s) or devices(s)that enable the server 300 to mediate data in a network with an entitythat is external to the host server 300, through any known and/orconvenient communications protocol supported by the host and theexternal entity. Specifically, the network interface 308 allows theserver 308 to communicate with multiple devices including mobile phonedevices 350, and/or one or more application servers/content providers310.

The host server 300 can store information about connections (e.g.,network characteristics, conditions, types of connections, etc.) withdevices in the connection metadata repository 312. Additionally, anyinformation about third party application or content providers can alsobe stored in 312. The host server 300 can store information aboutdevices (e.g., hardware capability, properties, device settings, devicelanguage, network capability, manufacturer, device model, OS, OSversion, etc.) in the device information repository 314. Additionally,the host server 300 can store information about network providers andthe various network service areas in the network service providerrepository 316.

The communication enabled by 308 allows for simultaneous connections(e.g., including cellular connections) with devices 350 and/orconnections (e.g., including wired/wireless, HTTP, Internet connections,LAN, Wifi, etc.) with content servers/providers 310, to manage thetraffic between devices 350 and content providers 310, for optimizingnetwork resource utilization and/or to conserver power (battery)consumption on the serviced devices 350. The host server 300 cancommunicate with mobile devices 350 serviced by different networkservice providers and/or in the same/different network service areas.The host server 300 can operate and is compatible with devices 350 withvarying types or levels of mobile capabilities, including by way ofexample but not limitation, 1G, 2G, 2G transitional (2.5G, 2.75G), 3G(IMT-2000), 3G transitional (3.5G, 3.75G, 3.9G), 4G (IMT-advanced), etc.

In general, the network interface 308 can include one or more of anetwork adaptor card, a wireless network interface card (e.g., SMSinterface, WiFi interface, interfaces for various generations of mobilecommunication standards including but not limited to 1G, 2G, 3G, 3.5G,4G type networks such as, LTE, WiMAX, etc.), Bluetooth, WiFi, or anyother network whether or not connected via a a router, an access point,a wireless router, a switch, a multilayer switch, a protocol converter,a gateway, a bridge, bridge router, a hub, a digital media receiver,and/or a repeater.

The host server 300 can further include, server-side components of thedistributed proxy and cache system which can include, a proxy server 325and a server cache 335. In one embodiment, the server proxy 325 caninclude an HTTP access engine 345, a caching policy manager 355, a proxycontroller 365, a traffic shaping engine 375, a new data detector 386,and/or a connection manager 395.

The HTTP access engine 345 may further include a heartbeat manager 346,the proxy controller 365 may further include a data invalidator module366, the traffic shaping engine 375 may further include a controlprotocol 276 and a batching module 377. Additional or lesscomponents/modules/engines can be included in the proxy server 325 andeach illustrated component.

As used herein, a “module,” “a manager,” a “handler,” a “detector,” an“interface,” a “controller,” or an “engine” includes a general purpose,dedicated or shared processor and, typically, firmware or softwaremodules that are executed by the processor. Depending uponimplementation-specific or other considerations, the module, manager,handler, or engine can be centralized or its functionality distributed.The module, manager, handler, or engine can include general or specialpurpose hardware, firmware, or software embodied in a computer-readable(storage) medium for execution by the processor. As used herein, acomputer-readable medium or computer-readable storage medium is intendedto include all mediums that are statutory (e.g., in the United States,under 35 U.S.C. 101), and to specifically exclude all mediums that arenon-statutory in nature to the extent that the exclusion is necessaryfor a claim that includes the computer-readable (storage) medium to bevalid. Known statutory computer-readable mediums include hardware (e.g.,registers, random access memory (RAM), non-volatile (NV) storage, toname a few), but may or may not be limited to hardware.

In the example of a device (e.g., mobile device 350) making anapplication or content request to an app server or content provider 310,the request may be intercepted and routed to the proxy server 325, whichis coupled to the device 350 and the provider 310. Specifically, theproxy server is able to communicate with the local proxy (e.g., proxy175 and 275 of the examples of FIG. 1 and FIG. 2 respectively) of thedevice 350, the local proxy forwards the data request to the proxyserver 325 for, in some instances, further processing, and if needed,for transmission to the content server 310 for a response to the datarequest.

In such a configuration, the host 300, or the proxy server 325 in thehost server 300 can utilize intelligent information provided by thelocal proxy in adjusting its communication with the device in such amanner that optimizes use of network and device resources. For example,the proxy server 325 can identify characteristics of user activity onthe device 350 to modify its communication frequency. Thecharacteristics of user activity can be determined by, for example, theactivity/behavior awareness module 366 in the proxy controller 365, viainformation collected by the local proxy on the device 350.

In one embodiment, communication frequency can be controlled by theconnection manager 396 of the proxy server 325, for example, to adjustpush frequency of content or updates to the device 350. For instance,push frequency can be decreased by the connection manager 396 whencharacteristics of the user activity indicate that the user is inactive.In one embodiment, when the characteristics of the user activityindicate that the user is subsequently active after a period ofinactivity, the connection manager 396 can adjust the communicationfrequency with the device 350 to send data that was buffered as a resultof decreased communication frequency, to the device 350.

In addition, the proxy server 325 includes priority awareness of variousrequests, transactions, sessions, applications, and/or specific events.Such awareness can be determined by the local proxy on the device 350and provided to the proxy server 325. The priority awareness module 367of the proxy server 325 can generally assess the priority (e.g.,including time-criticality, time-sensitivity, etc.) of various events orapplications; additionally, the priority awareness module 367 can trackpriorities determined by local proxies of devices 350.

In one embodiment, through priority awareness, the connection manager395 can further modify communication frequency (e.g., use or radio ascontrolled by the radio controller 396) of the server 300 with thedevices 350. For example, the server 300 can notify the device 350, thusrequesting use of the radio if it is not already in use, when data orupdates of an importance/priority level which meets a criteria becomesavailable to be sent.

In one embodiment, the proxy server 325 can detect multiple occurrencesof events (e.g., transactions, content, data received fromserver/provider 310) and allow the events to accumulate for batchtransfer to device 350. Batch transfer can be cumulated and transfer ofevents can be delayed based on priority awareness and/or useractivity/application behavior awareness, as tracked by modules 366and/or 367. For example, batch transfer of multiple events (of a lowerpriority) to the device 350 can be initiated by the batching module 377when an event of a higher priority (meeting a threshold or criteria) isdetected at the server 300. In addition, batch transfer from the server300 can be triggered when the server receives data from the device 350,indicating that the device radio is already in use and is thus on. Inone embodiment, the proxy server 324 can order the each messages/packetsin a batch for transmission based on event/transaction priority, suchthat higher priority content can be sent first, in case connection islost or the battery dies, etc.

In one embodiment, the server 300 caches data (e.g., as managed by thecaching policy manager 355) such that communication frequency over anetwork (e.g., cellular network) with the device 350 can be modified(e.g., decreased). The data can be cached, for example in the servercache 335, for subsequent retrieval or batch sending to the device 350to potentially decrease the need to turn on the device 350 radio. Theserver cache 335 can be partially or wholly internal to the host server300, although in the example of FIG. 3, it is shown as being external tothe host 300. In some instances, the server cache 335 may be the same asand/or integrated in part or in whole with another cache managed byanother entity (e.g., the optional caching proxy server 199 shown in theexample of FIG. 1B), such as being managed by an applicationserver/content provider 110, a network service provider, or anotherthird party.

In one embodiment, content caching is performed locally on the device350 with the assistance of host server 300. For example, proxy server325 in the host server 300 can query the application server/provider 310with requests and monitor changes in responses. When changed, differentor new responses are detected (e.g., by the new data detector 347), theproxy server 325 can notify the mobile device 350, such that the localproxy on the device 350 can make the decision to invalidate (e.g.,indicated as out-dated) the relevant cache entries stored as anyresponses in its local cache. Alternatively, the data invalidator module368 can automatically instruct the local proxy of the device 350 toinvalidate certain cached data, based on received responses from theapplication server/provider 310. The cached data is marked as invalid,and can get replaced or deleted when new content is received from thecontent server 310.

Note that data change can be detected by the detector 347 in one or moreways. For example, the server/provider 310 can notify the host server300 upon a change. The change can also be detected at the host server300 in response to a direct poll of the source server/provider 310. Insome instances, the proxy server 325 can in addition, pre-load the localcache on the device 350 with the new/updated/changed/different data.This can be performed when the host server 300 detects that the radio onthe mobile device is already in use, or when the server 300 hasadditional content/data to be sent to the device 350.

One or more the above mechanisms can be implemented simultaneously oradjusted/configured based on application (e.g., different policies fordifferent servers/providers 310). In some instances, the sourceprovider/server 310 may notify the host 300 for certain types of events(e.g., events meeting a priority threshold level). In addition, theprovider/server 310 may be configured to notify the host 300 at specifictime intervals, regardless of event priority.

In one embodiment, the proxy server 325 of the host 300 canmonitor/track responses received for the data request from the contentsource for changed results prior to returning the result to the mobiledevice, such monitoring may be suitable when data request to the contentsource has yielded same results to be returned to the mobile device,thus preventing network/power consumption from being used when nonew/changes are made to a particular requested. The local proxy of thedevice 350 can instruct the proxy server 325 to perform such monitoringor the proxy server 325 can automatically initiate such a process uponreceiving a certain number of the same responses (e.g., or a number ofthe same responses in a period of time) for a particular request.

In one embodiment, the server 300, for example, through theactivity/behavior awareness module 366, is able to identify or detectuser activity, at a device that is separate from the mobile device 350.For example, the module 366 may detect that a user's message inbox(e.g., email or types of inbox) is being accessed. This can indicatethat the user is interacting with his/her application using a deviceother than the mobile device 350 and may not need frequent updates, ifat all.

The server 300, in this instance, can thus decrease the frequency withwhich new, different, changed, or updated content is sent to the mobiledevice 350, or eliminate all communication for as long as the user isdetected to be using another device for access. Such frequency decreasemay be application specific (e.g., for the application with which theuser is interacting with on another device), or it may be a generalfrequency decrease (e.g., since the user is detected to be interactingwith one server or one application via another device, he/she could alsouse it to access other services) to the mobile device 350.

In one embodiment, the host server 300 is able to poll content sources310 on behalf of devices 350 to conserve power or battery consumption ondevices 350. For example, certain applications on the mobile device 350can poll its respective server 310 in a predictable recurring fashion.Such recurrence or other types of application behaviors can be trackedby the activity/behavior module 366 in the proxy controller 365. Thehost server 300 can thus poll content sources 310 for applications onthe mobile device 350, that would otherwise be performed by the device350 through a wireless (e.g., including cellular connectivity). The hostserver can poll the sources 310 for new, different, updated, or changeddata by way of the HTTP access engine 345 to establish HTTP connectionor by way of radio controller 396 to connect to the source 310 over thecellular network. When new, different, updated, or changed data isdetected, the new data detector can notify the device 350 that such datais available and/or provide the new/changed data to the device 350.

In one embodiment, the connection manager 395 determines that the mobiledevice 350 is unavailable (e.g., the radio is turned off) and utilizesSMS to transmit content to the device 350, for instance via the SMSCshown in the example of FIG. 1B. SMS is used to transmit invalidationmessages, batches of invalidation messages, or even content in the casethe content is small enough to fit into just a few (usually one or two)SMS messages. This avoids the need to access the radio channel to sendoverhead information. The host server 300 can use SMS for certaintransactions or responses having a priority level above a threshold orotherwise meeting a criteria. The server 300 can also utilize SMS as anout-of-band trigger to maintain or wake-up an IP connection as analternative to maintaining an always-on IP connection.

In one embodiment, the connection manager 395 in the proxy server 325(e.g., the heartbeat manager 398) can generate and/or transmit heartbeatmessages on behalf of connected devices 350, to maintain a backendconnection with a provider 310 for applications running on devices 350.

For example, in the distributed proxy system, local cache on the device350 can prevent any or all heartbeat messages needed to maintain TCP/IPconnections required for applications, from being sent over thecellular, or other network, and instead rely on the proxy server 325 onthe host server 300 to generate and/or send the heartbeat messages tomaintain a connection with the backend (e.g., app server/provider 110 inthe example of FIG. 1). The proxy server can generate the keep-alive(heartbeat) messages independent of the operations of the local proxy onthe mobile device.

The repositories 312, 314, and/or 316 can additionally store software,descriptive data, images, system information, drivers, and/or any otherdata item utilized by other components of the host server 300 and/or anyother servers for operation. The repositories may be managed by adatabase management system (DBMS), for example but not limited to,Oracle, DB2, Microsoft Access, Microsoft SQL Server, PostgreSQL, MySQL,FileMaker, etc.

The repositories can be implemented via object-oriented technologyand/or via text files, and can be managed by a distributed databasemanagement system, an object-oriented database management system(OODBMS) (e.g., ConceptBase, FastDB Main Memory Database ManagementSystem, JDOInstruments, ObjectDB, etc.), an object-relational databasemanagement system (ORDBMS) (e.g., Informix, OpenLink Virtuoso, VMDS,etc.), a file system, and/or any other convenient or known databasemanagement package.

FIG. 4 depicts a diagram showing how data requests from a mobile device450 to an application server/content provider 496 in a wireless networkcan be coordinated by a distributed proxy system 460 in a manner suchthat network and battery resources are conserved through using contentcaching and monitoring performed by the distributed proxy system 460.

In satisfying application or client requests on a mobile device 450without the distributed proxy system 460, the mobile device 450, or thesoftware widget executing on the device 450 performs a data request 402(e.g., an HTTP GET, POST, or other request) directly to the applicationserver 495 and receives a response 404 directly from the server/provider495. If the data has been updated, the widget on the mobile device 450can refreshes itself to reflect the update and waits for small period oftime and initiates another data request to the server/provider 495.

In one embodiment, the requesting client or software widget 455 on thedevice 450 can utilize the distributed proxy system 460 in handling thedata request made to server/provider 495. In general, the distributedproxy system 460 can include a local proxy 465 (which is typicallyconsidered a client-side component of the system 460 and can reside onthe mobile device 450), a caching proxy (475, considered a server-sidecomponent 470 of the system 460 and can reside on the host server 485 orbe wholly or partially external to the host server 485), a host server485. The local proxy 465 can be connected to the proxy 475 and hostserver 485 via any network or combination of networks.

When the distributed proxy system 460 is used for data/applicationrequests, the widget 455 can perform the data request 406 via the localproxy 465. The local proxy 465, can intercept the requests made bydevice applications, and can identify the connection type of the request(e.g., an HTTP get request or other types of requests). The local proxy465 can then query the local cache for any previous information aboutthe request (e.g., to determine whether a locally stored response isavailable and/or still valid). If a locally stored response is notavailable or if there is an invalid response stored, the local proxy 465can update or store information about the request, the time it was made,and any additional data, in the local cache. The information can beupdated for use in potentially satisfying subsequent requests.

The local proxy 465 can then send the request to the host server 485 andthe server 485 can perform the request 406 and returns the results inresponse 408. The local proxy 465 can store the result and in addition,information about the result and returns the result to the requestingwidget 455.

In one embodiment, if the same request has occurred multiple times(within a certain time period) and it has often yielded same results,the local proxy 465 can notify 410 the server 485 that the requestshould be monitored (e.g., steps 412 and 414) for result changes priorto returning a result to the local proxy 465 or requesting widget 455.

In one embodiment, if a request is marked for monitoring, the localproxy 465 can now store the results into the local cache. Now, when thedata request 416, for which a locally response is available, is made bythe widget 455 and intercepted at the local proxy 465, the proxy 465 canreturn the response 418 from the local cache without needing toestablish a connection communication over the wireless network. In oneembodiment, the response is stored at the server proxy in the servercache for subsequent use in satisfying same or similar data requests.The response can be stored in lieu of or in addition to storage on thelocal cache on the mobile device.

In addition, the server proxy performs the requests marked formonitoring 420 to determine whether the response 422 for the givenrequest has changed. In general, the host server 485 can perform thismonitoring independently of the widget 455 or local proxy 465operations. Whenever an unexpected response 422 is received for arequest, the server 485 can notify the local proxy 465 that the responsehas changed (e.g., the invalidate notification in step 424) and that thelocally stored response on the client should be erased or replaced witha new (e.g., changed or different) response.

In this case, a subsequent data request 426 by the widget 455 from thedevice 450 results in the data being returned from host server 485(e.g., via the caching proxy 475). Thus, through utilizing thedistributed proxy system 460 the wireless (cellular) network isintelligently used when the content/data for the widget or softwareapplication 455 on the mobile device 450 has actually changed. As such,the traffic needed to check for the changes to application data is notperformed over the wireless (cellular) network. This reduces the amountof generated network traffic and shortens the total time and the numberof times the radio module is powered up on the mobile device 450, thusreducing battery consumption, and in addition, frees up networkbandwidth.

FIG. 5 depicts a diagram showing one example process for implementing ahybrid IP and SMS power saving mode on a mobile device 550 using adistributed proxy and cache system (e.g., such as the distributed systemshown in the example of FIG. 1B).

In step 502, the local proxy (e.g., proxy 175 in the example of FIG. 1B)monitors the device for user activity. When the user is determined to beactive, server push is active. For example, always-on-push IP connectioncan be maintained and if available, SMS triggers can be immediately sentto the mobile device 550 as it becomes available.

In process 504, after the user has been detected to be inactive or idleover a period of time (e.g., the example is shown for a period ofinactivity of 20 min.), the local proxy can adjust the device to go intothe power saving mode. In the power saving mode, when the local proxyreceives a message or a correspondence from a remote proxy (e.g., theserver proxy 135 in the example of FIG. 1B) on the server-side of thedistributed proxy and cache system, the local proxy can respond with acall indicating that the device 550 is currently in power save mode(e.g., via a power save remote procedure call). In some instances, thelocal proxy can take the opportunity to notify multiple accounts orproviders (e.g., 510A, and 510B) of the current power save status (e.g.,timed to use the same radio power-on event).

In one embodiment, the response from the local proxy can include a time(e.g., the power save period) indicating to the remote proxy (e.g.,server proxy 135) and/or the app server/providers 510A/B when the device550 is next able to receive changes or additional data. A default powersavings period can be set by the local proxy.

In one embodiment, if new, change, or different data or event isreceived before the end of any one power saving period, then the waitperiod communicated to the servers 510A/B can be the existing period,rather than an incremented time period. In response, the remote proxyserver, upon receipt of power save notification from the device 550, canstop sending changes (data or SMSs) for the period of time requested(the wait period). At the end of the wait period, any notificationsreceived can be acted upon and changes sent to the device 550, forexample, as a single batched event or as individual events. If nonotifications come in, then push can be resumed with the data or an SMSbeing sent to the device 550. The proxy server can time the poll or datacollect event to optimize batch sending content to the mobile device 550to increase the chance that the client will receive data at the nextradio power on event.

Note that the wait period can be updated in operation in real time toaccommodate operating conditions. For example, the local proxy canadjust the wait period on the fly to accommodate the different delaysthat occur in the system.

Detection of user activity 512 at the device 550 causes the power savemode to be exited. When the device 550 exits power save mode, it canbegin to receive any changes associated with any pending notifications.If a power saving period has expired, then no power save cancel call maybe needed as the proxy server will already be in traditional pushoperation mode.

In one embodiment, power save mode is not applied when the device 550 isplugged into a charger. This setting can be reconfigured or adjusted bythe user or another party. In general, the power save mode can be turnedon and off, for example, by the user via a user interface on device 550.In general, timing of power events to receive data can be synced withany power save calls to optimize radio use.

FIG. 6 depicts a flow chart illustrating example processes through whichapplication behavior on a mobile device is used for trafficoptimization.

In process 602, application behavior of multiple applications accessedon a mobile device is detected. Using application behavior, thedistributed proxy system can implement one or more of several processesfor optimizing traffic.

For example, beginning in process 604, content requests for the at leastsome of the multiple applications are aligned and polling can beperformed over the wireless network in accordance with the alignment tosatisfy data requests of the multiple applications, in process 606. Inone embodiment, content requests for some of the multiple applicationscan be aligned based on content types requested by the multipleapplications. For example, content requests from different applicationsrequesting RSS feeds can be aligned. In addition, content requests fromdifferent applications requesting content from the same sources may bealigned (e.g., a social networking application and a web page may bothbe requesting media content from an online video streaming site such asYoutube). In another example, multiple Facebook applications on onedevice (one from OEM, one from marketplace) that both poll for samedata.

In addition, content requests can be aligned based on user's explicitand/or implicit preferences, user settings, mobile deviceparameters/parameters, and/or network parameters (e.g., network serviceprovider specifications or limitations, etc.) or conditions (e.g.,traffic, congestion, network outage, etc.). For example, when congestionis detected in a user's network service area, content requests can bealigned for the network is less congested. For example, when user isinactive, or when the battery is low, alignment may be performed moreaggressively.

In some instances, the polling can be performed by the proxy server onbehalf of multiple devices and can thus detect requests for polls fromthe same content source from multiple devices. The proxy server, canalign such requests occurring around the same time (e.g., within aspecific time period) for multiple devices and perform a poll of thesource to satisfy the data needs of the multiple mobile devices. Forexample, during the Superbowl, the proxy server can detect a largernumber of requests to poll ESPN.com or NFL.com for live score updatesfor the game. The proxy server can poll the content source once for acurrent score and provide the updates to each of the mobile devices thathave applications which have (within a time period) requested polls forscore updates.

In another example, beginning in process 608, recurrences in applicationrequests made by the multiple applications are detected. Recurrences ofapplication behavior can be identified by, for example, trackingpatterns in application behavior.

Using the recurrences, polling of content sources as a result of theapplication requests that would be performed at the mobile device cannow be offloaded, to be performed instead, for example, by a proxyserver remote from the mobile device in the wireless network, in process610. The application behavior can be tracked by, for example, a localproxy on the mobile device and communicated to the proxy server asconnection metadata, for use in polling the content sources. The localproxy can delays or modifies data prior to transmission to the proxyserve and can additionally identify and retrieve mobile deviceproperties including, one or more of, battery level, network that thedevice is registered on, radio state, whether the mobile device is beingused. The offloading to the proxy server can be performed, for example,when the recurrences match a rule or criteria. In addition, the proxyserver and/or the local proxy can delay the delivery of a responsereceived from a content source and/or perform additional modification,etc. For example, the local proxy can delay the presentation of theresponse via the mobile device to the user, in some instances.

Patterns of behavior can include, one or more of, by way of example butnot limitation, frequency that requested content is the same, frequencywith which a same request is made, interval between requests,applications making a request, frequency of requests at certain times ofday, day of week. In addition, multi-application traffic patterns canalso be detected and tracked.

In process 612, the proxy server can notify the mobile device whencontent change is detected in response to the polling of the contentsources. In one embodiment, cached content, when available, can beprovided to satisfy application requests when content change is notdetected in the polling of the content sources. For example, the localproxy can include a local cache and can satisfy application requests onthe mobile device using cached content stored in the local cache. In oneembodiment, the decision to use cached content versus requesting datafrom the content source is determined based on the patterns inapplication behavior. In addition, an application profile can begenerated, using the application behavior of the multiple applications,in process 614.

FIG. 7 depicts a flow chart illustrating an example process for mobileapplication traffic optimization through data monitoring andcoordination in a distributed proxy and cache system.

In process 702, a data request made by the mobile application on amobile device is intercepted. In process 704, a local cache on themobile device is queried.

In process 706, it is determined whether a locally stored valid responseexists (e.g., whether a locally stored response is available and if so,if the stored response is still valid. If so, in process 708, thelocally stored response to the mobile device without the mobile deviceneeding to access the cellular network

If not, a locally stored response is not available, or available butinvalid, one or more of several approaches may be taken to optimize thetraffic used in the wireless network for satisfying this request, aswill be described below.

In one example, in process 710, the data request is sent to a remoteproxy which forwards the data request to a content source. In general,the remote proxy can delay or modify data from the local proxy prior totransmission to the content sources. In one embodiment, the proxy servercan use device properties and/or connection metadata to generate rulesfor satisfying request of applications on the mobile device. Inaddition, the proxy server can optionally gather real time trafficinformation about requests of applications for later use in optimizingsimilar connections with the mobile device or other mobile devices.

In process 712, a response provided by the content source is receivedthrough the remote proxy. In one embodiment, the remote proxy cansimulate an application server authentication and querying a local cacheon the mobile device to retrieve connection information if available orneeded to connect to the content source. Upon authentication applicationserver responses for the mobile application can be simulated by theremote proxy on the mobile device for data requests where responses areavailable in the local cache.

In process 714, the response is locally stored as cache entries in alocal repository on the mobile device. The local cache entries can bestored for subsequent use in satisfying same or similar data request.

In addition, in process 716, data request to the content source isdetected to yielded same results to be returned to the mobile device(e.g., detected by the local proxy on the mobile device). In response tosuch detection, the remote proxy is notified to monitor responsesreceived for the data request from the content source for changedresults prior to returning the result to the mobile device. In oneembodiment, the local proxy can store the response as a cache entry inthe local cache for the data request when the remote proxy is notifiedto monitor the responses for the data request.

In process 722, the remote proxy performs the data request identifiedfor monitoring and notifies the mobile device when an unexpectedresponse to the data request is detected. In process 724. The locallystored response on the mobile device is erased or replaced when notifiedof the unexpected response to the data request.

In another example, when a locally stored response is not available orotherwise invalid, in process 718, a remote proxy is queried for aremotely stored response. In process 720, the remotely stored responseis provided to the mobile device without the mobile device needing toaccess the cellular network. In process 722, the remote proxy performsthe data request identified for monitoring and notifies the mobiledevice when an unexpected response to the data request is detected. Inprocess 724. The locally stored response on the mobile device is erasedor replaced when notified of the unexpected response to the data request

FIG. 8 depicts a flow chart illustrating an example process forpreventing applications from needing to send keep-alive messages tomaintain an IP connection with a content server.

In process 802, applications attempting to send keep-alive messages to acontent server are detected at a mobile device.

In process 804, the keep-alive messages are intercepted and preventedfrom being sent from the mobile device over the wireless network to thecontent server. Since keep-alives are similar to any other (long-poll)requests—the content on the back end typically does not change and theproxy server can keep polling the content server.

In process 806, the keep-alive messages are generated at a proxy serverremote from the mobile device and sent from the proxy server to thecontent server, in process 808.

FIG. 9 shows a diagrammatic representation of a machine in the exampleform of a computer system within which a set of instructions, forcausing the machine to perform any one or more of the methodologiesdiscussed herein, may be executed.

Establishing the Activity Session

An activity session may be recognized and activated based on a predictedactivity session by either the proxy server or the local proxy in thefollowing manner. On the device side, application activity after aperiod of inactivity, during which a potential activity session has beenidentified, can cause the local proxy to compare the data request to alist of host URLs associated with a predicted/anticipated activitysession.

If the data activity matches a higher-priority entry in the URL list,for example, based on a priority threshold, the data activity maytrigger the start of an activity session based on the predicted activitysession. If there is no match or a lower-priority match, then theactivity session may not be initiated. Other embodiments may includeother prioritization schemes or priority criteria to determine when orif an activity session will be established. A predicted activity sessioncan be recognized and converted to an Activity Session in the hostserver (proxy server) in a similar manner.

In some embodiments, if an activity session is detected or created bythe local proxy, the local proxy can request a multiplexed connection beestablished to optimize the signaling during the session. If an activitysession is identified by the server, the existing TCP connection openedfrom the mobile device can be converted into a multiplexed session andused for the optimized connection. Alternatively, the first data requestfrom the mobile device can be accomplished outside of the multiplexedconnection, and the multiplexed connection can be established forsubsequent data transfers.

Once an activity session is established and has been acknowledged by thelocal proxy and/or proxy server, the proxy server can now proactivelycache data (e.g., access the URLs or application servers/providersanticipated in the predicted activity sessions) for more rapid access tocontent anticipated to be needed in the predicted activity session. Thesystem can “piggy-back” transfer of the anticipated data with other datarequested by the mobile device for caching in the local cache on themobile device. These mechanisms effectively increase the availability ofdesired data on the mobile, and shorten the duration of an establishedconnection needed for the present activity session.

One example of a use case for the present technology is described asfollows:

i. Predicting an activity session based on push activity in the idlestate:

-   -   1. While user is sleeping, his phone has received three push        notifications from Facebook, and five emails;    -   2. When user wakes up and checks his phone, he sees these        notifications and emails. His natural tendency is to open these        two applications and check his emails and Facebook status;    -   3. Upon the transition from screen-lock to unlock, the server        recognizes that based on the push activity, the user is likely        to get access to these two applications. The device sends a        state change notification to the server, and in response, the        server sends an activity session indicator to the device. The        server pre-caches information relevant to the session, and        creates a persistent connection with the device to support the        activity session;    -   4. User accesses the services, and is pleased that the relevant        data seems to be already on his device;    -   5. The persistent connection is managed by the device and server        to time out based on certain criteria, to maximize device        battery life.

ii. Predicting an activity session based on a change in geographicallocation during idle state—as a user moves between locations, the systemcan recognize that they are more likely to engage in certain requests oractivities based on the transit route or the new location.

iii. Predicting an activity session based on receiving a phone call inidle state based on previous user behavior, the system now recognizesthat the user is likely to engage in certain behaviors upon accessingthe call (such as checking a specific applications, making certainupdates, accessing certain contacts in the contact book, etc.).

Cross Application Traffic Coordination

In one embodiment of the invention, a group of applications [A, B, C, .. . ] will have a timeline of transfers of information from the clientto the cloud (e.g., the network) or from the cloud to the client, whichcan be represented as

Application A: tA1, tA2, tA3, . . .

Application B: tB1, tB2, tB3, . . .

Application C: tC1, tC2, tC3, . . .

Upon the transition from screen-lock to unlock, the server recognizesthat based on where each of these times may have a natural point ofoccurring based upon the independent activity of that application as itsoperations are executed in the cloud and/or client. For example, anapplication may transfer a message or data to the network (or viceversa) at a regular or semiregular series of times as part of a polling,maintenance, or other operation. Similarly, an application may transfera message or data to the network (or vice versa) at a regular,semiregular, or irregular series of times as part of executing one ormore of its inherent functions or operations, such as synchronizing twodata stores, determining the contents of a data store, accessing newdata from a remote source, exchanging control messages, etc. Initially,at least in some cases, there may be no correlation or at most a weakcorrelation between the times at which a transfer occurs for oneapplication as compared to a second application. In other cases, theremay be a stronger correlation between the times at which a transferoccurs for one application as compared to a second application (e.g.,where an operation of a first application is dependent upon or triggersan operation of a second application, or where a user typically executesan operation of one application in conjunction with an operation of asecond application).

In some embodiments, in order to optimize (typically to minimize) thenumber of times that a device (e.g., a handset) radio is turned on andthereby reduce its consumption of power (and hence conserve its batteryor other power source), the client proxy and server proxy may bothoperate to intercept these transfers (or requests for transfer) ofinformation and delay the time at which one or more of these transferswould normally occur in order to perform multiple such transferstogether as part of a single transfer operation (i.e., instead ofperforming multiple, individual transfers). The delay time (D) mayrepresent a maximum delay value after receipt of a request to make sucha transfer, with the value of D determined so as to enable thecollection of as many of the transfers as feasible in a single,optimized data transfer without incurring any undesired penalties orinefficiencies, or having an undesired impact on the user experience. Insome embodiments, this may mean that D is determined based onconsideration of one or more of the priority of the application (or therelative priority of one application in comparison to another), thenature or amount of data involved in the transfer (e.g., whether itrepresents fresh data, a housekeeping function, a control instruction,etc.), the status of the application (e.g., active, inactive,background, foreground, etc.), a useable lifetime of the data to betransferred (a period before it becomes stale), the interval between thetransfer times for a single application, the interval between thetransfer times across more than one application (e.g., the largesttransfer time interval based on consideration of all activeapplications), network characteristics (available bandwidth, networklatency, etc.), or another relevant factor. In some embodiments, thesize of the delay D can be controlled by the device (and user) as partof optimizing the battery life of the device by enabling the user toforce a batch exchange of data in response to the requests of one ormore applications instead of performing multiple data transfers.

Connection Optimization

Techniques are known in the art for reusing TCP connections, such aspersistent TCP sessions and TCP connection pooling. Both techniques onthe mobile client side allow previously-established TCP connections tothe same server to be reused for multiple HTTP transactions, which savesconnection establishment and tear-down times between transactions.However, with multiple applications running, and each establishing theirown TCP connections to perhaps multiple host servers, there are stillpotentially many TCP connections being established during a given timeof network activity.

A benefit of a distributed proxy architecture (such as that describedabove), where each end-point (i.e., the proxy in the client and theproxy in the server) is well known by the system, is that a single TCPconnection can be used to transport all of the application trafficduring an established activity session. The WebMUX and SCP protocolsallow multiplexing of multiple sessions of application-level protocols(such as HTTP) over a single TCP connection. In one embodiment of thepresent invention, an activity session may be supported by a multiplexedTCP connection using these or a similar mechanism. In anotherembodiment, the activity session may be supported by a TCP connectionpool, with the connection reuse enhanced by nature of connecting to asingle proxy server (or proxy in a server) for all requests.

Prediction Basis

Mobile application usage is sporadic in nature. Generally, there areperiods of user inactivity followed by periods of multiple applicationusage, such as where a user is updating their Facebook status, sending aTweet, checking their email, and using other applications to get anupdate of their online information. This doesn't mean, however, that themobile device is inactive during user inactivity: the device may beactively downloading new content such as advertisements, polling foremail, and receiving push notifications for activities on the Internet.In some situations, the distributed proxy system and architecturedescribed above is designed to eliminate much of this “background” dataaccess in order to improve signaling efficiency and use of networkresources.

In some embodiments of the present invention, the Traffic Shaping modulein the server functions to categorize the activity that is beingprocessed by the server since the last user activity session. TheTraffic Shaping module creates a Potential Activity Session for eachmobile device, which may include:

1) A list of URLs representing host targets (push notification senders,email hosts, web services);

2) For each URL, a count of pending data that is available to the userfor that target URL; and

3) For each URL, a last-accessed time and a frequency of access.

Once created, the data may be prioritized based on last accessed time,frequency, pending data count, or other criteria to form a prioritizedlist of host URL targets. This Potential Activity Session forms thebasis for predicting whether a subsequent mobile device data requestwill activate the session (i.e., turn the Potential Activity Sessioninto an Activity Session). The prioritization or prediction of thisoccurring may also be based on one or more data types orcharacteristics, heuristics, algorithms, collaborative filteringtechniques, etc. that process data to determine a most likely behaviorby a user. For example, the data processing may determine that there isa relatively high correlation between a user accessing one type ofapplication, followed by them accessing a second application. Or, thatwhen a user becomes active on their device after a certain amount oftime, they are likely to engage in a series of actions, data requests,etc.

Or, that when sufficient new data (notifications, messages, etc.) hasbecome available to the user, they are likely to access it in a certainorder (such as by activating a series of applications or generating aseries of requests in a certain order).

In some embodiments, or in addition to the server prediction approachdescribed above, the client device may use contextual cues available viahardware sensors or application activity indications to predict thelikelihood of the start of an activity session. For example, aclient-side proxy may monitor location changes in the device to predictthat a location update may be sent to, a location-based service, or maymonitor user activity at certain geographical locations to set up aPotential Activity Session based on historical application usage at aparticular location. The Potential Activity Session, although derived bymeans of hardware context on the mobile device (e.g., the state oroperating status of the device), is typically the same in structure asthat created on the server.

When WCDMA was specified, there was no or very little attention torequirements posed by applications whose functions are based on actionsinitiated by the network, in contrast to functions initiated by the useror by the device. Such applications include, for example, push email,instant messaging, visual voicemail and voice and video telephony, andothers. Such applications typically require an always-on IP connectionand frequent transmit of small bits of data. WCDMA networks are designedand optimized for high-throughput of large amounts of data, not forapplications that require frequent, but low-throughput and/or smallamounts of data. Each transaction puts radio in a high power mode forconsiderable length of time—typically between 15-30 seconds. As the highpower mode can consume as much as 100 x the power as an idle mode, thesenetwork-initiated applications drain battery in WCDMA networks veryfast. The issue has been exaggerated by the rapid increase of popularityof applications with network-initiated functionalities, such as pushemail.

The obvious lack of proper support has prompted a number of vendors toprovide documents to guide their operator partners and independentsoftware vendors to configure their networks and applications to performbetter in WCDMA networks. This guidance mainly focus on two things:configuring networks to go to stay on high-power radio mode as short aspossible and making periodic keep alive messages that are used tomaintain an always-on TCP/IP connection as infrequent as possible. Suchsolutions typically assume lack of coordination between the user, theapplication and the network, forcing the network to guess what theapplication might be doing, and application to act independently ofwhether user actually is available for taking action on any networkinitiated activity.

Embodiments of the present invention utilize a device client thatprovides the front-line user interface to users for accessing variousservices, such as push email, instant messaging, visual voice mail etc.In context of battery conservation, the Device Client observes useractivity (for example, by observing user keystrokes, backlight statusetc) and alters its own behavior, as well as asks the CommunicationsServer to alter its behavior based on user activity:

(1) Cumulating/batching low priority transactions originating from thedevice and sending them only after user has been inactive for certainperiod of time. Such low priority transactions may include markingemails read or unread or deleting emails. The logic is that there is novalue on sending these transactions while user is engaged with themobile device.

(2) Notifying the Communications Servers when user is inactive—a certaininactivity timeout has been exceeded. On receipt of such notification,the Communication Server may throttle down the frequency of push of newtransactions to the device, thus resulting in having radio on high powerless frequently. The notification will only be sent to networkpiggybacking on a receipt of new high importance data, such as newemail, for two reasons: (a) as it is the activation of radio that drainsbattery, sending data to network separately would essentially consume asmuch battery as sending it as soon as incoming data is received (b) itensures that user, whenever back with the device, does have the highimportance data (such as new email) waiting in the inbox

(3) Notifying the Communications Servers once user becomes active again,requesting immediate sending of any buffered data.

Additionally, the Device Client, recognizing the time criticality ofspecific transactions, will interact directly with the radio interfaceon the device, requesting transmission on lower-power radio modes (whereavailable) for non-critical data and high-power modes for criticaldata—typically where the data transfer is user-initiated and user iswaiting for the response.

Also, the Device Client, having the ability to control and cache datatransmissions, will interact directly with the radio interface on thedevice, requesting radio to go idle directly after a transmission if itconcludes that the probability of user-initiated time criticaltransmission is low. This happens, for example, in cases where DeviceClient has observed certain period of inactivity from the user.

As a further component of the presently disclosed invention is anotification server that provides a Network Server the capability towake up the Device Client when device client is not actively connectedto the Network Server. This functionality, originally invented in apatent application referenced below has a side effect of significantpower conservation, as the Device Client does not need to maintain analways-on TCP UP connection to allow the Network Server to send updatesand notifications to the Device Client. The highest significance of thisis that always-on TCP IIP connection requires periodic keep alives thatconsume significant power. The notification server allows for theswitching off of keep alives altogether, as always-on TCP/IP connectionis not required, thus reducing need for frequent data transfer thatdrains battery in especially in WCDMA.

The network server acts as the communication link between the DeviceClients, Communications Servers and Notification Server.

Communication server act as the Device Client's and user's agent in thenetwork, providing connectivity to user's email inbox, instant messagingcommunity, visual voicemail inbox, VoIP community etc. SeparateCommunication Servers may be used to connect to different services. Incontext of battery conservation, it performs two tasks.

(1) When notified of user inactivity by Device Client, it sustains fromsending any data to the Device Client. The sending may be resumed, forexample, after a specified time, or by Device Client notifying userbeing active again

(2) In cases where Communications Server can monitor user activity intheir own data storage, such as email inbox, it will batch low prioritychanges (such as deletes or markings as read/unread) until inactivity isobserved. The activity in the mailbox can be considered as a proxy thatuser is active on some other interface to their mailbox, such as theirPC, and thus not actively expecting updates to their mobile device.

Batching of Low Priority Changes

Current design of Cava assumes that the IP connection is always on andimmediately sends any and all changes to the other end point. This leadsto the ‘real time’ always up to date experience but also to large andundesirable battery drain. The battery drain comes from radio over-headintroduced by the device when it sends data. Sending data turns out tobe the expensive operation from a power consumption point of view notkeeping a connection up. Any time the radio is used to senddata—regardless the size of data packet being sent—the radio is left ina high power state for a number of seconds. This causes significantbattery drain.

This effect is especially strong in UMTS or 3G networks where a minimalradio on event seems to take as much at 2× that of an equivalent 2.5G orGPRS event.

In order to minimize the negative battery drain effect we want a processfor collecting low priority changes and sending them to the server inbatches rather than individually. A priority listing is illustrated inTable I.

These proposed changes will affect all accounts/products and arefundamental changes to the ‘always in sync’ nature of our clients.

Manual sync—regardless of product should always cause a complete updateof the inbox—high and low priority changes should be brought into syncand any data source reliant on a partial poll should complete a fullpoll and full sync in order to pick up all changes including folderchanges, email deletes etc.

Client Changes (IP only and Hybrid IP & SMS)

Batching Changes

Currently all changes are sent as soon as possible from the client tothe server.

Required Changes

-   -   1. The client will not automatically send low priority changes        to the server.    -   2. The client will always send any (all registered accounts)        unsent low priority changes to the server with the any high        priority change it sends or with or instead of any KA.    -   3. The client will always immediately respond with any low        priority changes if it receives data from the relay server (if a        client receives data of any kind, including a ping from the OA        admin UI, then the radio has been turned on and we should send        low priority changes to the server while it is on)    -   4. If low priority changes are still unsent after the user has        been inactive on their device for 120 secs then any unsent        changes should be sent to the server. The inactive time is        brandable and defined by brand variable        @client.inactivity_low_proirity_operation@ which is set to 120        secs by default. In other words once the inactive time has        expired a batch of low priority changes is treated like a high        priority change and is sent to the server.        -   a. The inactively we want to track here is the user's            interaction on the whole device where possible (J2ME—will            have to rely on activity within our client, other platforms            we should use the device wide user activity timers).    -   5. There needs to be a brandable parameter to turn this batching        feature on and off. The default for this parameter should be on.        Off may be needed for automated testing and load testing. Future        requirements may need this on/off control to be visible in the        client UI.        Device Inactivity.

Our different platforms have to implement detection of device inactivitydifferently.

Initial cross code (C++) implementation of this feature sends a lowpriority change @client.inactivity_low_proirity_operation@ after thelast low priority change has been received in the device. Although animprovement, this is not ideal as it does not delay a low prioritychange while the user reads an already ‘read’ emails or complete othernon-changing causing activities like writing an email.

WinMo

System SEVEN forms a plug-in to the base Operating System in thisplatform so we can not directly detect when a user is reading emails.The closest we can get to monitoring the user whole device activity isto request the device to notify us when the backlight turns off. Theuser idle logic for WinMo therefore needs to be:

-   -   1. always send pending low priority changes with high priority        changes    -   2. when a low priority change comes in send it after the        following wait:        -   a. device screen goes idle and stays idle for            @client.idle_delay_low_proirity_operation@ which should be            set to 120 secs by default        -   b. maximum wait=@client.max_delay_low_proirity_operation@            (set to 900 secs by default) from time any low priority            change is received.

If screen idle cannot be implemented then we will have to rely on awaiting @ client.inactivity_low_proirity_operation@ after the last lowpriority change has been received in the device, as implemented in theinitial coding noted above.

Symbian

System SEVEN forms a plug-in to the base Operating System in thisplatform so we can not directly detect when a user is reading emails.The closest we can get to monitoring the user whole device activity isto use a device API that returns the ‘time since last user activity’(usually a key press). The user idle logic for Symbian can then mirrorthat for WinMo.

If screen idle cannot be implemented then we will have to rely on awaiting @ client.inactivity_low_proirity_operation@ after the last lowpriority change has been received in the device, as implemented in theinitial coding noted above.

Brew

System SEVEN is the whole of the email application (and more) for BREW,so we have more options available for monitoring user activity. Theclosest we can get to monitoring the user whole device activity is toperiodically poll the device to identify if the backlight is off. Thisis similar to our current polling for battery level. The user idle logicfor Brew can then mirror that for WinMo.

If screen idle cannot be implemented then we should watch the user forany interaction with our app (Is the Flash Engine up) and only sent lowpriority changes @client.inactivity_low_proirity_operation@ secondsafter the user stops using us (exits the flash UI)

Palm

System SEVEN is the whole of the email application for Palm, so we havemore options available for monitoring user activity. The closest we canget to monitoring the user whole device activity is to watch for keypress′. The user idle logic therefore needs to be:

-   -   1. always send pending low priority changes with high priority        changes    -   2. when a low priority change comes in send it after the        following wait:        -   a. no device key presses are detected for            @client.idle_delay_low_proirity_operation@ which should be            set to 120 secs by default        -   b. maximum wait=@client.max_delay_low_proirity_operation@            (set to 900 secs by default) from time any low priority            change is received.

If key press monitoring cannot be implemented then we should watch theuser for any interaction with our app and only sent low priority changes@client.inactivity_low_proirity_operation@ seconds after the user stopsusing us.

J2ME

System SEVEN is the whole of the email application but is limited toworking within the J2ME ‘sand box’ on the device. Two ‘styles’ of J2MEexist on phones, one that supports a background mode and one that doesnot. J2ME can detect key strokes while we are in the foreground mode butnot in background. We can also query the device screen and find out ifthe last screen load we sent is still being shown. The J2ME client alsohas to deal with the red key which acts as an immediate ‘kill’. The userlogic therefore needs to be:

-   -   1. always send pending low priority changes with high priority        changes    -   2. add, a challenge screen, such that if a user selects ‘exit’        or minimizes (sends to background) then a screen is shown to the        user Title: Pending Changes. Body: You have pending changes. Do        you want to send them now? Buttons: Yes, No, If yes is pressed        send them, if No then don't until user next opens the client,        brings it into the foreground or a high priority event occurs        (background sync). Even if the changes don't get send for a        while the user is informed. The Application will exit without        the ‘pending changes screen when the red end key is pressed or a        phone call/SMS interrupts our application, and the user says        ‘No’ to a later ‘Resume Application’ prompt. In such cases        changes will be sent on the next application start.    -   3. The J2me app can only go into a background mode if either the        user selects to minimize it which is covered in 2 above, or        press' a direct suspend button. Because of the direct suspend        button, we will need the client_max_delay. The main use case for        J2ME is to open the app look at email and close/minimize it        again, in which case you will see the challenge screen covered        in point 2 above. It will be rare for the app to sit with low        priority changes so the added complexity of the        client_idle_delay is not justified and is not needed.

All connection errors and retries should apply in the same way that theycurrently do to any device data sends.

The end result of these changes is that a user will be able to read anddelete their entire inbox without causing the radio to be turned onuntil they have been inactive for a period of time. This inbox triage isone of the most common activities and currently causes significantbattery drain.

Pruning Inbox

While reviewing power logs it was noticed that we currently prune ourinbox in ‘real time’. In other words if the user has their preferencesset to ‘keep emails 7 days old’ then the moment that an email becomes 7days and 1 sec old we initiate an email delete from the client sideinbox. This requires a connection to the RS and causes a power event(even if a connection is present). Pruning the inbox is not timesensitive and does not justify additional power events. To minimizepower usage we should ‘piggy back’ removal of old emails from our inboxwindow on other RS communications.

Required Changes

-   -   1. The client will monitor for pruning events as per current        behavior    -   2. A ‘pending’ pruning event will never trigger a data transfer        or connect    -   3. Pending pruning event will be sent to the server with the        next RS communication that takes place.

The result of this is that your inbox could become bloated with emailthat is out of your interest window but only if you have not receivednew email and have not used the client (sent and email, read/unreademail, changed settings etc).

Server Changes—WE and EE Connectors

Currently the WE and EE connectors are aware of high and low prioritychanges and attempts to send all changes as soon as possible to theRelay Server (RS). The connector flags the priority of the changes inits message to the RS. If the client is connected the RS delivers thechanges and tells the connector that the changes have been delivered. Ifthe client is not connected the RS decides whether it will send an SMSto the client based upon whether the client can receive SMS's (is inHybrid mode) and on the priority of the changes (SMS's are not sent forlow priority changes). It then drops the actual changes and tells theConnector that they have not been delivered. When the client nextconnects (due to a KA or to the SMS arriving) then the RS tells theconnector that the client has connected and the connector sends anyundelivered changes to the RS for delivery to the client.

Required Changes

-   -   1. The connector will not automatically send low priority        changes to the client (the change here if to clients operating        in IP only mode). (this could be implemented at the RS to mirror        the SMS logic if that is easier)    -   2. The connector will always send any unsent low priority        changes to the server with the any high priority change it sends        (confirm this is the case)    -   3. The connector will always immediately respond with any low        priority changes if it receives data from a client (if a        connector receives data of any kind, including a settings        updates, then the radio has been turned on and we should send        low priority changes to the client while it is on). It would be        nice to include KA's here but currently they are handled by the        RS and don't ‘make it’ to the connector.    -   4. when a low priority change(s) are detected, send it/them        after the following wait:        -   a. no activity have been seen on their email for @            server.inactivity_WEEEconnector_delay_low_proirity_operation@            which should be set to 900 secs (15 mins) by default        -   b. maximum wait=@            server.max_WEEEconnector_delay_low_proirity_operation@ (set            to 1800 secs by default) from time any low priority change            is received.    -   5. The users inactivity period will be reset if the connector is        restarted. The connector has to send a status packet so the        radio price has to be paid anyway.

All connection errors and retries should apply in the same way that theycurrently do to any connector data sends.

The end result of these changes is that a user will be able to manage afull session from their rich client reading and deleting many emailsbefore causing the radio on their phone to be turned on. This inboxtriage is one of the most common activities and currently causessignificant battery drain.

Server Changes—OWA& CE Connector

Currently the OWA & CE connectors have two ways to detect a change.Either they are notified by the data source or poll the data source anddetect a change directly. OWA notifications and many ISP notificationsystems only notify us of high priority changes this is ideal as we thenonly send high priority changes to the client immediately. In order topick up any other changes we complete a back ground poll periodically.The polling interval can be set for each ISP and defaults to 5 mins.

The 5 minutes is for polling without notifications—if notifications areenabled, we only poll every 5*POLLING_INTERVAL minutes meaningmark-as-reads are discovered potentially 25 minutes they take place

Required Changes

None

CE always sends anything it finds in a poll to the client right away,but only high-priority changes cause a trigger to be sent to the client.So marking emails as read results in a sync package being sent to theclient, but if client is not online, the package will be nacked and CEknows changes weren't received, resending them in the next poll.

If we receive a notification it will be for a high priority changes andso reacting to it by polling and sending data or an SMS is the correctthing to do.

Items to consider for future improvements:

-   -   1. The connector will always send any unsent low priority        changes to the server with the any high priority change it sends        but does not wait for high priority changes before sending the        low priority changes, see description above.    -   2. The connector will always immediately respond with any low        priority changes if it receives data from a client (if a        connector receives data of any kind, including a settings        updates, then the radio has been turned on and we should send        low priority changes to the client while it is on). It would be        nice to include KA's here but currently they are handled by the        RS and don't ‘make it’ to the connector.    -   3. If we find only low priority changes during a poll and they        are still unsent after 3N mins (3 successive polls if account is        not receiving notifications) then any unsent changes should be        sent to the client. The number (3) should be a parameter that        can be easily changed or optimized        (@server.max_poll_repeats_low_proirity_operation@).        -   In other words if we have not found a high priority change            in 3 polls we send the low priority changes and they would            cause an SMS to be sent.            -   a. If the account has received a notification and is in                backup polling then the user may get low priority                changes following every poll. In this scenario we should                not wait 3N mins we should detect that 3N<5N (our next                poll) and send them immediately.

All connection errors and retries should apply in the same way that theycurrently do to any connector data sends.

Power Save Mode (IP & hybrid SMS Mode)

The over view of this mode is as follows:

-   -   1. The client monitors user activity on the device (see section        below). Each platform will do this in their own way but is it        usually done with a backlight state API or monitoring keyboard        clicks. If the user is active on the device, push behavior is as        currently implemented. In IP only mode always-on-push is        maintained in hybrid mode SMS triggers are immediately sent and        responded too.    -   2. After @client.inactivity_power_save_secs@ set to 1200 (20        mins) by default time has expired since the last end user device        activity then the device goes into power saving mode.    -   3. The client waits for the next new email to be delivered by        the server (Connect to receive email etc) and responds with a        power save RPC call to all the account end points it currently        has registered. NOTE this requires a new Sync layer RPC. NOTE        this may require multiple RPC calls (one per registered account)        but they should be timed to use the same high power radio event,        as each other and the reason for the power event in the first        place (receiving an email), for example, timed within        milliseconds of each other.    -   4. The power save RPC call will include a time (power save        period) indicating to the connectors when the client next wants        to receive any changes.    -   5. The 1^(st), N power saving periods in a single power save        event will be @client.push_batch_period_one_power_save_secs@ set        to 900 (15 mins) by default long        -   any additional consecutive power saving periods will be            @client.push_batch_period_two_power_save_secs@ set to 3600            (1 hour) by default            N=@server.push_batch_period_one_repeat_power_save_secs@ set            to 4 by default        -   Any activity on the device takes the client out of power            saving mode and end that particular power save event.        -   If additional data is received before the end of any one            power saving period, then the wait period communicated to            the connectors will be the existing period—elapsed time            since the power save RPC was sent.    -   6. When a connector receives a power save notification from a        device it stops sending changes (data or SMS's) for the period        of time requested (the wait period). At the end of the wait        period any notifications received will be acted upon and changes        sent to the device as a single event if no notifications come in        then true push will resume with the data or an SMS being sent        immediately to the device.    -   7. The wait period must be able to be updated as the client may        send additional power saving RPCs (with updated wait times) if        multi accounts respond to the end of a wait period with        different delays.    -   8. Coordinating all connectors for a particular device (7TP)        address to reach the end of a wait period together would be        ideal but is not easily possible and will not be done at this        time. This maximizes the chance that any change batches sent to        the client from multiple accounts will arrive at the device at        the same time and will only cause one power event by strictly        adhering the to the wait periods send from the client unless the        connector knows that it is ‘running’ slow or always takes x more        seconds to complete than our standard WE/EE backend. In this        case the connector may start the poll or data collect event x        seconds early in order to increase the chance that the client        will receive data at their specified time. NOTE this is at best        going to increase chances of hitting the powered up window.    -   9. Whenever new email comes into the client while it is in a        power saving mode it responds with the power saving RPC to all        end points currently registered. The next power save period will        be communicated based on the logic in point 5 above.    -   10. If the client needs to send a keep-alive while it is in        power saving mode then it sends the keep-alive and reconnects if        necessary.—optimizing the keep-alive and reconnection logic        during power saving mode is an area we will improve on in the        future.    -   11. Whenever the device detects user activity (key press' or        backlight on) then it exits' power saving mode, if a power        saving period is currently in progress then the client sends a        power save cancel RPC to its backend connectors and immediately        receives any changes associated with any pending notifications.        This may require a poll to be run by the connector after        receiving the power saving cancel RPC. If the latest power        saving period has expired then no power save cancel RPC is        required as the connectors will already be in normal true push        operational mode.    -   12. Devices should come out of and not go into power save mode        if they are ‘plugged in’ to charge.    -   13. Quiet time hours should not affect the calculation of        entering power save mode. However we should still respect the        quiet time hours and disconnect during them. At the end of a        quiet time the client should reconnect and receive any data        waiting on the connector but should then immediately send        another power save RPC if the device has not shown any end user        activity. Note the timing here is critical so that the power        event that receives the data should also cover the power save        RPC.    -   14. Power save RPCs should not be retried. We should just wait        for the next new mail and send another power save RPC if        appropriate.    -   15. There needs to be a brandable parameter to turn support for        power save mode on and off. The default for this parameter        should be ‘on’. Off may be needed for automated testing and load        testing. Future requirements may need this on/off control to be        visible in the client UI.    -   16. Currently the CE server optimizes load by only polling a CE        account once even if a user is accessing that account with two        devices. We will poll the account any time either device/account        require us too but will only send data to devices who want it        (ie are not in power save mode).    -   17. Calendar and contact changes will continue to be delivered        as soon as they are discovered. They will also not trigger a        power save response from the client. If sending calendar or        contact data. Any pending email data is sent.

The end result of these changes is that a user that receives multipleemails while not interacting with their phone will have a significantlyprolonged battery life. The more emails a user receives the greater thepower savings for their phone.

The two user cases that have driven the default parameter settings arethe 1-2 hour lunch or meeting—where the system now moves into powersaving mode after 30 minutes and then only sync 4 times even if a userreceived 35 emails in that hour. The other is leaving a phone on overnight but with quiet hours set poorly (for example, only quiet for 4hours 00:00 to 04:0). In this case, a once an hour sync state isprovided to thereby preserve your battery despite the short quiet timeyou have set.

In the initial implementation power saving mode will not be respected bythe CE connector for accounts that are activated on more than onedevice. This is because the CE account manager combines accounts into asingle poll request for the same account if it is activated on more thanone device. The complexity of supporting two polls at different timesdue to different power saving status of two or more devices is notwanted for the initial implementation.

Various platforms implement detection of device activity differently. Inone embodiment, the system forms a plug-in to the base Operating Systemin this platform. One method for monitoring the user device activity isto request the device to notify us when the backlight turns off. Theuser idle logic is thus:

-   -   1. Enter power saving mode:        -   device screen goes idle and stays idle for            @client.inactivity_power_save_secs@ set to 1200 by default    -   2. Exit power saving mode:        -   device screen turns on

Another embodiment forms a plug-in to the base Operating System in thisplatform. One method for monitoring the user device activity is to use adevice API that returns the ‘time since last user activity’ (usually akey press). The user idle logic is thus:

-   -   1. Enter power saving mode:        -   device screen goes idle and stays idle for            @client.inactivity_power_save_secs @ set to 1200 by default        -   Detect this by calling the last user activity API and then            waiting until the timer might be up and calling it again to            see if the user has remained inactive.    -   2. Exit power saving mode:        -   Detect activity by calling the last user activity API            regularly—every 5 mins.

In another embodiment, one method for monitoring the user deviceactivity is to periodically poll the device to identify if the backlightis off. This is similar to our current polling for battery level. Theuser idle logic is therefor:

-   -   1. Enter power saving mode:        -   device screen goes idle and stays idle for            @client.inactivity_power_save_secs @ set to 1200 by default        -   We will need to detect this by calling the last user            activity API and then waiting until our timer might be up            and calling it again to see if the user has remained            inactive.    -   2. Exit power saving mode:        -   Detect activity by calling the last user activity API            regularly, such as every 5 mins.            In another embodiment, one method for monitoring the user            device activity is to watch for key press'. The user idle            logic therefore needs to be:    -   1. Enter power saving mode:        -   if no keys are pressed for            @client.inactivity_power_save_secs @ set to 1200 by default    -   2. Exit power saving mode:        -   on first device key press.

Provided herein is an email application that is limited to workingwithin the Java Platform (“J2ME”) ‘sand box’ on the device. Two ‘styles’of J2ME exist on phones, one that supports a background mode and onethat does not. J2ME can detect key strokes while we are in theforeground mode but not in background. One method is to query the devicescreen and find out if the last screen load that was sent is still beingshown. The J2ME client also has to deal with the red key which acts asan immediate ‘kill’. The user logic therefore needs to be:

-   -   1. If the application is exited then no changes—there is        provided a “would you like to sync?” screen shown on client        launch.    -   2. Enter power saving mode:        -   enters background mode and has been in it for at least            @client.inactivity_power_save_secs @ set to 1200 by default        -   OR we are in foreground mode and no keys have been pressed            for that amount of time    -   3. Exit power saving mode: This may be done by going from        background mode into foreground mode. OR a key is pressed while        we are in foreground mode.    -   4. All connection errors and retries should apply in the same        way that they currently do to any device data sends.

Current design of Cava assumes that the IP connection is always on andimmediately sends any and all changes to the other end point. This leadsto the ‘real time’ always up to date experience but also to large andundesirable battery drain. The battery drain comes from radio over-headintroduced by the device when it sends data. Sending data turns out tobe the expensive operation from a power consumption point of view notkeeping a connection up. Any time the radio is used to senddata—regardless the size of data packet being sent—the radio is left ina high power state for a number of seconds. This causes significantbattery drain. This effect is especially strong in UMTS or 3G networkswhere a minimal radio on event seems to take as much at 2× that of anequivalent 2.5G or GPRS event. In order to minimize the negative batterydrain we want a process for collecting large numbers of new emails (orhigh priority changes) and syncing them in batches rather thanindividually. We are going to achieve this by introducing a ‘power save’mode. This change is targeted at improving the power performanceespecially for users who receive a large number of emails during theday. These proposed changes will affect all accounts/products and arefundamental changes to the/always in sync' nature of our clients.

In alternative embodiments, the machine operates as a standalone deviceor may be connected (e.g., networked) to other machines. In a networkeddeployment, the machine may operate in the capacity of a server or aclient machine in a client-server network environment, or as a peermachine in a peer-to-peer (or distributed) network environment.

The machine may be a server computer, a client computer, a personalcomputer (PC), a user device, a tablet PC, a laptop computer, a set-topbox (STB), a personal digital assistant (PDA), a cellular telephone, aniPhone, an iPad, a Blackberry, a processor, a telephone, a webappliance, a network router, switch or bridge, a console, a hand-heldconsole, a (hand-held) gaming device, a music player, any portable,mobile, hand-held device, or any machine capable of executing a set ofinstructions (sequential or otherwise) that specify actions to be takenby that machine.

While the machine-readable medium or machine-readable storage medium isshown in an exemplary embodiment to be a single medium, the term“machine-readable medium” and “machine-readable storage medium” shouldbe taken to include a single medium or multiple media (e.g., acentralized or distributed database, and/or associated caches andservers) that store the one or more sets of instructions. The term“machine-readable medium” and “machine-readable storage medium” shallalso be taken to include any medium that is capable of storing, encodingor carrying a set of instructions for execution by the machine and thatcause the machine to perform any one or more of the methodologies of thepresently disclosed technique and innovation.

In general, the routines executed to implement the embodiments of thedisclosure, may be implemented as part of an operating system or aspecific application, component, program, object, module or sequence ofinstructions referred to as “computer programs.” The computer programstypically comprise one or more instructions set at various times invarious memory and storage devices in a computer, and that, when readand executed by one or more processing units or processors in acomputer, cause the computer to perform operations to execute elementsinvolving the various aspects of the disclosure.

Moreover, while embodiments have been described in the context of fullyfunctioning computers and computer systems, those skilled in the artwill appreciate that the various embodiments are capable of beingdistributed as a program product in a variety of forms, and that thedisclosure applies equally regardless of the particular type of machineor computer-readable media used to actually effect the distribution.

Further examples of machine-readable storage media, machine-readablemedia, or computer-readable (storage) media include but are not limitedto recordable type media such as volatile and non-volatile memorydevices, floppy and other removable disks, hard disk drives, opticaldisks (e.g., Compact Disk Read-Only Memory (CD ROMS), Digital VersatileDisks, (DVDs), etc.), among others, and transmission type media such asdigital and analog communication links.

Unless the context clearly requires otherwise, throughout thedescription and the claims, the words “comprise,” “comprising,” and thelike are to be construed in an inclusive sense, as opposed to anexclusive or exhaustive sense; that is to say, in the sense of“including, but not limited to.” As used herein, the terms “connected,”“coupled,” or any variant thereof, means any connection or coupling,either direct or indirect, between two or more elements; the coupling ofconnection between the elements can be physical, logical, or acombination thereof. Additionally, the words “herein,” “above,” “below,”and words of similar import, when used in this application, shall referto this application as a whole and not to any particular portions ofthis application. Where the context permits, words in the above DetailedDescription using the singular or plural number may also include theplural or singular number respectively. The word “or,” in reference to alist of two or more items, covers all of the following interpretationsof the word: any of the items in the list, all of the items in the list,and any combination of the items in the list.

The above detailed description of embodiments of the disclosure is notintended to be exhaustive or to limit the teachings to the precise formdisclosed above. While specific embodiments of, and examples for, thedisclosure are described above for illustrative purposes, variousequivalent modifications are possible within the scope of thedisclosure, as those skilled in the relevant art will recognize. Forexample, while processes or blocks are presented in a given order,alternative embodiments may perform routines having steps, or employsystems having blocks, in a different order, and some processes orblocks may be deleted, moved, added, subdivided, combined, and/ormodified to provide alternative or subcombinations. Each of theseprocesses or blocks may be implemented in a variety of different ways.Also, while processes or blocks are at times shown as being performed inseries, these processes or blocks may instead be performed in parallel,or may be performed at different times. Further any specific numbersnoted herein are only examples: alternative implementations may employdiffering values or ranges.

The teachings of the disclosure provided herein can be applied to othersystems, not necessarily the system described above. The elements andacts of the various embodiments described above can be combined toprovide further embodiments.

Any patents and applications and other references noted above, includingany that may be listed in accompanying filing papers, are incorporatedherein by reference. Aspects of the disclosure can be modified, ifnecessary, to employ the systems, functions, and concepts of the variousreferences described above to provide yet further embodiments of thedisclosure.

These and other changes can be made to the disclosure in light of theabove Detailed Description. While the above description describescertain embodiments of the disclosure, and describes the best modecontemplated, no matter how detailed the above appears in text, theteachings can be practiced in many ways. Details of the system may varyconsiderably in its implementation details, while still beingencompassed by the subject matter disclosed herein. As noted above,particular terminology used when describing certain features or aspectsof the disclosure should not be taken to imply that the terminology isbeing redefined herein to be restricted to any specific characteristics,features, or aspects of the disclosure with which that terminology isassociated. In general, the terms used in the following claims shouldnot be construed to limit the disclosure to the specific embodimentsdisclosed in the specification, unless the above Detailed Descriptionsection explicitly defines such terms. Accordingly, the actual scope ofthe disclosure encompasses not only the disclosed embodiments, but alsoall equivalent ways of practicing or implementing the disclosure underthe claims.

While certain aspects of the disclosure are presented below in certainclaim forms, the inventors contemplate the various aspects of thedisclosure in any number of claim forms. For example, while only oneaspect of the disclosure is recited as a means-plus-function claim under35 U.S.C. § 112, 916, other aspects may likewise be embodied as ameans-plus-function claim, or in other forms, such as being embodied ina computer-readable medium. (Any claims intended to be treated under 35U.S.C. § 112, 916 will begin with the words “means for”.) Accordingly,the applicant reserves the right to add additional claims after filingthe application to pursue such additional claim forms for other aspectsof the disclosure.

What is claimed is:
 1. A mobile device having an established multiplexedconnection for optimizing communications, the mobile device comprising:a memory; and a processor configured for: receiving a selection from auser whether to enable an application for fetching; communicating overthe established multiplexed connection; predicting an activity sessionbased on application access history, wherein the application accesshistory includes historical application usage; fetching data for theapplication before the activity session to support the predictedactivity session before beginning the activity session, wherein theapplication is operating in a background of the mobile device, whereinthe data is fetched if the fetching is enabled by the user selection forthe application, wherein at least some of the fetched data is forbackground requests made by the application on the mobile device;wherein a second connection is established that is other than theestablished multiplexed connection with the mobile device, whereinfetching data occurs over the second connection; and disconnecting fromthe second connection.
 2. The mobile device of claim 1, wherein theestablished multiplex connection is a TCP connection.
 3. The mobiledevice of claim 1, wherein the application access history includes apattern of multiple mobile application use on the mobile device.
 4. Themobile device of claim 1, wherein the activity session is activated bythe mobile device.
 5. The mobile device of claim 1, wherein the fetchingof the data can be enabled or disabled by a user selection such thatfetching for multiple applications can be enabled or disabled by asingle user selection.
 6. The mobile device of claim 1, furthercomprising an application behavior detector to track applicationbehavior.
 7. The mobile device of claim 6, wherein the applicationbehavior can be used by the mobile device to optimize traffic byaligning content requests by applications.
 8. The mobile device of claim1, wherein data requests for multiple applications are aligned.
 9. Themobile device of claim 1, wherein the application access historyincludes a time of day of access.
 10. The mobile device of claim 1,wherein the mobile device initiates the second connection.
 11. Themobile device of claim 1, wherein the activity session occurs after aperiod of inactivity for the application supported by the activitysession.
 12. A method of optimizing communications for a mobile device,the method comprising: receiving a selection from a user whether toenable an application for fetching; communicating over an establishedmultiplexed connection; predicting an activity session based onapplication access history, wherein the application access historyincludes historical application usage; fetching data for applicationbefore the activity session to support the predicted activity sessionbefore beginning the activity session, wherein the application isoperating in a background of the mobile device, wherein the data isfetched if the fetching is enabled by the user selection for theapplication, wherein at least some of the fetched data is for backgroundrequests made by an application on the mobile device; wherein a secondconnection is established that is other than the established multiplexedconnection with the mobile device, wherein fetching data occurs over thesecond connection; and disconnecting from the second connection.
 13. Themethod of claim 12, wherein the established multiplex connection is aTCP connection.
 14. The method of claim 12, wherein the applicationaccess history includes a pattern of multiple mobile application use onthe mobile device.
 15. The method of claim 12, wherein the activitysession is activated by the mobile device.
 16. The method of claim 12,wherein the fetching of the data can be enabled or disabled by a userselection such that fetching for multiple applications can be enabled ordisabled by a single user selection.
 17. The method of claim 12,comprising tracking application behavior.
 18. The method of claim 17,wherein the application behavior can be used by the mobile device tooptimize traffic by aligning content requests by applications.
 19. Themethod of claim 12, wherein data requests for multiple applications arealigned.
 20. The method of claim 12, wherein the application accesshistory includes a time of day of access.
 21. The method of claim 12,wherein the mobile device initiates the second connection.
 22. Themethod of claim 12, wherein the activity session occurs after a periodof inactivity for the application supported by the activity session. 23.The mobile device of claim 1, wherein data is not fetched for anotherapplication that is not enabled for fetching by the user selection. 24.The method of claim 12, wherein data is not fetched for anotherapplication that is not enabled for fetching by the user selection.